我有一个用户的集合,每个用户都有一个订阅的对象数组。我想向该数组添加另一个订阅。我正在获取新的订阅,并使用 findByIdAndUpdate
对其进行更新,但它没有添加新的订阅,但它显示文档已更新。我尝试了几种方法,但效果都不好。
这是最后一种方法:
...
const { user_id } = req.params;
const subscription = req.body; // Getting subscription
const user = await UserModel.findById(user_id).lean().exec(); // Getting user by id
const { push_subscriptions } = user; // Getting subscribtions with destructuring
const updated_subs = [...push_subscriptions, subscription];
// Getting user another time and updating the push_subscriptions array
const updated_user = await UserModel.findByIdAndUpdate(user_id,
{push_subscriptions: updated_subs},
{ new: true }
).exec();
...
这是请求正文和参数的日志
// body
{
endpoint: 'https://fcm.googleapis.com/fcm/send/cQ6wlRJ8t-s:APA91bEjqdLMzQLsroJ7zHzdjrzoshdPD8IJy_iIeRa8qV_Yjt6N1jeMUtyMq73wSn9JJT-4WXr_8uwHXttj-XFxHPCPAOqgN7zALsmf_BeIRZowRBTRHf9YH8v3AlcaZXWAIQ0qJNdn',
expirationTime: null,
keys: {
p256dh: 'BBPC5h1QnBMPKMfPacgJu_2RFT7LAejyINh3CvP4pamkrlERr06YpRlSb7RbTUOn6MYW4adG93KfdEWXz68F9iQ',
auth: 'Zl3iaOdBvihXG2QVOb26IQ'
}
}
//params
{ user_id: '5fedc679f414663c693cf549' }
用户架构,push_subscriptions 部分:
push_subscriptions: {
type: Array,
},
最佳答案
您的查询看起来不错,您可以使用 $push
执行单个查询,而不是进行手动处理,
const { user_id } = req.params;
const subscription = req.body;
const updated_user = await UserModel.findByIdAndUpdate(user_id,
{
$push: {
push_subscriptions: subscription
},
{ new: true }
).exec();
关于javascript - 更新 Mongo 文档内的数组不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65532594/