【发布时间】:2013-03-15 08:34:15
【问题描述】:
我有这个猫鼬模式
var mongoose = require('mongoose');
var ContactSchema = module.exports = new mongoose.Schema({
name: {
type: String,
required: true
},
phone: {
type: Number,
required: true,
index: {unique: true}
},
messages: [
{
title: {type: String, required: true},
msg: {type: String, required: true}
}]
}, {
collection: 'contacts',
safe: true
});
并尝试通过这样做来更新模型:
Contact.findById(id, function(err, info) {
if (err) return res.send("contact create error: " + err);
// add the message to the contacts messages
Contact.update({_id: info._id}, {$push: {"messages": {title: title, msg: msg}}}, function(err, numAffected, rawResponse) {
if (err) return res.send("contact addMsg error: " + err);
console.log('The number of updated documents was %d', numAffected);
console.log('The raw response from Mongo was ', rawResponse);
});
});
我不是声明 messages 来获取对象数组吗?
错误: MongoError:无法将 $push/$pushAll 修饰符应用于非数组
有什么想法吗?
【问题讨论】:
-
您收到什么错误信息? “我似乎无法正确处理
$push”是什么意思? -
MongoError: 无法将 $push/$pushAll 修饰符应用于非数组
-
不确定这是否能解决问题,但请尝试去掉
[{title: title, msgs: [msg]}]周围的方括号。$push接受单个值。 -
我的猜测是您最初将消息添加为非数组
-
@user1460015 请将您的问题标记为已解决。