我有一个看起来像这样的猫鼬模型:
var mongoose = require('mongoose')
, Schema = mongoose.Schema;
var PictureSchema = new Schema({
listId: { type: Array, required: true },
thumb: { type: String, required: true },
large: { type: String, required: true }
});
var Picture = module.exports = mongoose.model('Picture', PictureSchema);
我正在尝试通过“listId”属性查找图片来更新路由器中此模型的实例。像这样:
app.put('/pictures/append', function(req, res) {
var targetListId = req.body.targetListId
, currentListId = req.body.currentListId;
Picture
.find({ listId: currentListId }, function (err, picture) {
console.log('found pic', picture);
picture.listId.push(targetListId);
picture.save(function(err, pic) {
console.log('pic SAVED', pic);
});
});
});
“currentListId”是一个字符串,而 listId 是一个 currentListId 的数组。也许这不是查询作为数组的属性的正确方法?我收到一个错误:
TypeError: Cannot call method 'push' of undefined
在线上:
picture.listId.push(targetListId);
但是当我在 mongo 中查找图片模型时,它们确实有 listId 数组,并且有些确实包含我用于查询的项目“currentListId”。
我尝试使用 $elemMatch 和 $in 但我不知道我是否正确使用它们。知道我只是写错了查询吗?