我正在尝试将一个字符串附加到一个数组中,该数组将用于标识多个聊天室中的用户。我已经尝试过但无法让这个工作。除了以下内容之外,日志不会显示任何内容:
[]
if (req.body.method == "setid") {
if(req.locals.user.chatid == null){
req.locals.user.chatid = {};
}
app.model.User.update(
{ _id: req.locals.user._id },
{ $addToSet: { chatid: [{mid: req.body.value}]} }
);
} else if (req.body.method == "checkid" && req.body.value) {
app.model.User.find({
"chatid": req.body.value
}, function(err, FoundUser) {
if (err || !FoundUser) {
res.end("ERROR");
} else {
console.log(FoundUser);
res.end(FoundUser[0].displayName);
}
});
}
Mongo结构
{
email: { type: String, index: { unique: true }, required: true },
password: { type: String },
changeName: {type: Boolean},
displayName: { type: String, index: { unique: true }, required: true },
avatar: { type: String, default: '/assets/anon.png' },
permissions: {
chat: { type: Boolean, default: true },
admin: { type: Boolean, default: false }
},
online: { type: Boolean, default: true },
channel: { type: Types.ObjectId, ref: 'Channel', default: null }, //users channel
banned: { type: Boolean, default: false },
banend: {type:String, default: ''},
subs: [{ type: Types.ObjectId, ref: 'User' }],
about: { type: String },
temporary: {type: Boolean, default: false},
chatid:[{mid: {type:String}}]
}
答案 0 :(得分:1)
让我们只关注下面的代码片段:
app.model.User.update(
{ _id: req.locals.user._id },
{ $addToSet: { chatid: [{mid: req.body.value}]} }
);
首先,请验证您是否在此查询中获取用户。也许,你没有让用户在第一时间,因此更新将无法正常工作。此外,在这种情况下,您不会收到任何错误。
其次,如果您收到该用户,请将您的$addToSet
查询更新为:{ $addToSet: { chatid: {mid: req.body.value}}}
。这些方括号可能会引起问题。
您的查询对我来说似乎很好,这让我怀疑您传递的参数。确保req.body.value
不是null
或undefined
。在这种情况下,更新不会发生,您也不会收到任何错误!