我有一个快速的JS应用程序,我正在尝试PUT(更新现有用户的名字)。我的架构是嵌套数组,如下所示:
使用PUT更新此用户的代码如下所示:
router.route('/sensors_update/:_id/')
.put(function (req, res) {
console.log("inside update put")
User.findById(req.params._id, function(err, user) {
if (err)
res.send(err);
console.log(user);
user.name = req.body.name;
console.log("User val is" + user);
user.save();
});
});
我能够清楚地看到用户名正在使用JS控制台进行更新。但是在保存这个用户对象方面我遇到了问题。我想这应该是因为我有一个嵌套的架构。我的假设是对的吗?有关如何使用嵌套数组保存用户对象的任何建议。
以下是控制台消息:
inside update put
{ _id: 'Manasa',
name: 'Manasa Sub',
__v: 0,
sensors:
[ { sensor_name: 'ras',
_id: 57da0a4bf3884d1fb2234c74,
measurements: [Object] } ] }
User val is{ _id: 'Manasa',
name: 'Manas Sub',
__v: 0,
sensors:
[ { sensor_name: 'ras',
_id: 57da0a4bf3884d1fb2234c74,
measurements: [Object] } ] }
我想知道为什么在我尝试更新和保存用户名时访问嵌套数组。
由于
更新
_http_outgoing.js:335 抛出新的错误('不能在发送后设置标题。'); ^ 错误:发送后无法设置标头。
我该如何解决这个问题?
回应:
{
"message": "Cast to date failed for value \"7:00\" at path \"time\"",
"name": "CastError",
"type": "date",
"value": "7:00",
"path": "time"
}
答案 0 :(得分:0)
嵌套架构不是问题。错误清楚地记录在控制台中。您正在为日期类型模式传递字符串类型值。将时间值从字符串类型更改为日期。
或者,如果要存储字符串,请将时间shcmea类型从date更改为string。时间:{type:String}
答案 1 :(得分:0)
解决方案:当您使用嵌套数组时,推送和设置mongodb可以解决这个问题。 这是更新单个字段的方法。