繁体   English   中英

Express JS PUT未保存但正在更新

[英]Express JS PUT not saving but it's updating

我有一个快速的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"
      }

嵌套架构不是问题。 错误明确记录在控制台中。 您正在传递日期类型架构的字符串类型值。 将时间值从字符串类型更改为日期。

或者,如果要存储字符串,则将时间shcmea类型从日期更改为字符串。 时间:{type:String}

解决方案:嵌套数组时,mongodb的push和set可以解决问题。 这就是更新单个字段的方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM