【问题标题】:Express JS PUT not saving but it's updatingExpress JS PUT 未保存但正在更新
【发布时间】:2016-10-11 01:29:50
【问题描述】:

我有一个 express 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 throw new Error('Can\'t set headers after they are sent.'); ^ 错误:发送后无法设置标头。

我该如何解决这个问题?

回应:

    {
     "message": "Cast to date failed for value \"7:00\" at path \"time\"",
     "name": "CastError",
      "type": "date",
       "value": "7:00",
      "path": "time"
      }

【问题讨论】:

    标签: javascript mongodb rest express


    【解决方案1】:

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

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

    【讨论】:

    • 当您尝试多次向客户端发送响应时会发生此错误。确保它在您的路线中是正确的。
    • 控制台 findById 的 err 块。它不应该抛出错误。
    • 我检查了路由,它们看起来不错,没有重复发送。
    • if (err) { console.log(err); res.send(err); } 试试这个。它不应该在这里。
    • 当您使用 save() 时,它不会只更新一个文件,它只是保存完整的文档并检查其上的所有验证。要更新单个字段,请使用 $set 更新。
    【解决方案2】:

    解决方案:当您嵌套数组时,推送和设置 mongodb 可以解决问题。 这就是更新单个字段的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-25
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 1970-01-01
      相关资源
      最近更新 更多