添加到带有点符号的对象在猫鼬中不起作用
Adding to object with dot notation not working in Mongoose
我在猫鼬身上遇到了最奇怪的问题。我有以下对象:
var gameInfo = { "id": $scope.gamedata._id, "role": role, "equipment": "", "notes": "" };
我使用 Node 将其发送到以下函数:
app.put('/userJoin/:userid', function (req, res) {
console.log("app user join data: " + JSON.stringify(req.body));
var userid = req.params.userid;
var u_id = new mongoose.Types.ObjectId(userid);
var query = { _id: u_id };
User.findOne(query).exec(function (err, tempuser) {
console.log(JSON.stringify(tempuser));
if (tempuser.games == null) {
console.log("creating games list");
tempuser.games = [req.body];
tempuser.x = 5;
tempuser.shoes = "red";
console.log("created games list");
}
else {
console.log("adding to games list");
tempuser.games.push(req.body);
}
console.log(JSON.stringify(tempuser));
tempuser.save(function (err) {
if (err) { res.send(err); }
else { res.status(200).end(); }
});
});
});
在其中,我使用User.findone(query)
从数据库中检索一个用户,并且由于它还没有属性游戏,因此if
块会触发,并且我在控制台中看到creating games list
和created games list
。但是,我也使用控制台检查if
块前后,tempuser
对象根本没有变化。由于我在之前和之后检查,我几乎可以确定故障一定在if
块内,但我无法弄清楚原因。
编辑:为了澄清起见,这是服务器端控制台的输出:
app user join data: {"id":"56e06bf57b05ae040e4227ae","role":"2","equipment":"","notes":""}
{"_id":"56e84cce39f024241eaa0b7f","__v":0,"password":"03c7c0ace395d80182db07ae2c30f034","username":"a"}
creating games list
created games list
{"_id":"56e84cce39f024241eaa0b7f","__v":0,"password":"03c7c0ace395d80182db07ae2c30f034","username":"a"}
如您所见,尽管使用点表示法向 tempuser 添加了另外三个属性,但尚未添加任何内容。
快步走过后,答案突然出现在我的脑海中,我已经验证了它是正确的。问题在于我对猫鼬的一些基础知识缺乏了解,对框架不熟悉。
User.findOne(query).exec(function (err, tempuser)
检索到猫鼬模型,而不是普通的javascript对象,正如我意识到的那样,模型在创建后不能直接更改(只能更新它们的值)。games:[]
数组不是模型的一部分,因此我无法添加它。
相关文章:
- 面向对象的Javascript代码在IE7中不起作用
- JQuery示例不起作用-“;对象没有't支持属性或方法'按钮'&”;
- 对象文字方法上的Javascript绑定不起作用
- 带有普通对象的Ember.js查找不起作用
- 在SVG中创建带有外来对象的文本区域的Javascript不起作用
- 函数中的 angularJS 访问对象属性不起作用
- JavaScript参数对象不起作用
- 当图像和链接是 json 对象属性的值时,它们不起作用
- JavaScript Audio 对象在 Android API 19 中不起作用
- 为什么从 Angular 服务中的对象中删除此元素不起作用
- jQuery父对象(“tr”)淡出不起作用
- 将JSON对象转换为敲除observable在IE8中不起作用,但在所有其他浏览器中都起作用
- Javascript敲除绑定嵌套对象不起作用
- 映射 jQuery 对象的数组不起作用
- 对象原型在Canvas Game中不起作用
- AngularJS-对象分配不起作用
- javascript对象检查在IE11中不起作用
- PHP将JSON对象返回到Javascript[AAJAX CALL]不起作用
- 将JAX-RS与ajax和javascript's blob对象,不'不起作用
- 函数中的对象访问;不起作用