0
我有一个标签模式:猫鼬更新多个文件将不更新任何
var labelSchema = mongoose.Schema({
name: String,
desc: String,
postIds: [mongoose.Schema.ObjectId],
removed: { type: Boolean, default: false }
})
我想更新postIds阵列时,标签被分配到一个职位,所以我在更新后要求做:
Label.update({'_id': { $in: post.labelIds }}, {$addToSet: {postIds:req.body.id}}, {multi: true})
其中post.labelIds是一个标签ID数组。我用find()方法测试了查询,它工作正常,它找到了所有的标签。但是,当我检查数据库的更新记录时,没有标签更新。
当我更新命令之前做post.LabelIds的的console.log,它返回:
[ 'uniqueidhere', 'anotheruniqidthere' ]
和req.body.id
uniqueidhere
因此,IDS是有的,但以某种方式更新不起作用。
尝试在'mongoose.Schema.ObjectId'中包裹ID# – chridam
当我在包围ObjectId()的mongodb shell中尝试它时,工作,这是伟大的。然而,我应该如何用ObjectId()来包装数组中的每个元素? –
如果标签id是十六进制字符串,那么不需要将它们转换为ObjectId,我的意思是将'req.body.id'值强制转换为ObjectId的'var mongoose = require('mongoose'); var postId = mongoose.Types.ObjectId(req.body.id);'然后在你的更新中使用它'$ addToSet:{postIds:postId}' – chridam