【问题标题】:Update function is not working in MEAN Stack using node.js and angular js使用 node.js 和 angular js 在 MEAN Stack 中更新功能不起作用
【发布时间】:2016-12-20 15:52:19
【问题描述】:

您好,我是平均堆栈的初学者,我想使用 update 更新记录

功能我确实保存记录成功,但更新功能不起作用。

我想根据 id 更新特定对象。但它不起作用。

我正在使用这个函数来更新node js文件

中的记录
  module.exports.useredit = function (req, res)
    {
        var user = new Usermodel();
        user = req.body.dataToModify;
        console.log(user);
        user.update({ _id:user._id },user);
    };

当我使用console.log(user);更新数据时显示如下

{ _id: '5846692617e0575c0e0c2211',
  password: 123456,
  email: 'shahjad.ahmad89@gmail.com',
  name: 'shahjad232324324324',
  __v: 0 }

但数据没有更新。我使用时显示的错误消息

 user.update({ _id:user._id },user);

错误是

user.update is not a function</h1>↵<h2></h2>↵<pre>TypeError: user.update is not a function↵    at module.exports.useredit (C:\Users\Ahmad\ticket\controller\usercontroller.js:102:10)↵    at Layer.handle [as handle_request] (C:\Users\Ahmad\ticket\node_modules\express\lib\router\layer.js:95:5)↵    at next (C:\Users\Ahmad\ticket\node_modules\express\lib\router\route.js:131:13)↵    at Route.dispatch (C:\Users\Ahmad\ticket\node_modules\express\lib\router\route.js:112:3)↵    at Layer.handle [as handle_request] (C:\Users\Ahmad\ticket\node_modules\express\lib\router\layer.js:95:5)↵    at C:\Users\Ahmad\ticket\node_modules\express\lib\router\index.js:277:22↵    at Function.process_params (C:\Users\Ahmad\ticket\node_modules\express\lib\router\index.js:330:12)↵    at next (C:\Users\Ahmad\ticket\node_modules\express\lib\router\index.js:271:10)↵    at Function.handle (C:\Users\Ahmad\ticket\node_modules\express\lib\router\index.js:176:3)↵    at router (C:\Users\Ahmad\ticket\node_modules\express\lib\router\index.js:46:12)↵    at Layer.handle [as handle_request] (C:\Users\Ahmad\ticket\node_modules\express\lib\router\layer.js:95:5)↵    at trim_prefix (C:\Users\Ahmad\ticket\node_modules\express\lib\router\index.js:312:13)↵    at C:\Users\Ahmad\ticket\node_modules\express\lib\router\index.js:280:7↵    at Function.process_params (C:\Users\Ahmad\ticket\node_modules\express\lib\router\index.js:330:12)↵    at next (C:\Users\Ahmad\ticket\node_modules\express\lib\router\index.js:271:10)↵    at C:\Users\Ahmad\ticket\node_modules\express\lib\router\index.js:618:15</pre>↵"

如何重新使用它以及如何将数据更新到 mongodb。

【问题讨论】:

    标签: javascript angularjs node.js mongodb


    【解决方案1】:

    试试这个:

    module.exports.useredit = function (req, res){ var id = req.params.id, body = req.body, options = { upsert: true, new : true } mongoDB.User.findOneAndUpdate({_id:id)}, body, options, function(err, user) { if(err){res.json(err)}else{res.json(user)} } }

    注意,mongoDB.user.findOneAndUpdate,“mongoDB”是通用的。这是您对 MongoDB Schema 的引用名称,无论您如何命名。

    【讨论】:

    • 什么是 mongoDB.User.findOneAndUpdate 这一行什么是用户
    • 这通常是在另一个文件中引用 MongoDB 模式,我不确定你的文件结构如何。好像你可能没有这个,把 mongoDB 拿掉就行了。
    【解决方案2】:

    你也可以试试

    user.update({ _id:user._id },$set{user});
    

    【讨论】:

      【解决方案3】:

      试试这个..

      user.findOneAndUpdate({_id:user._id}, user, {upsert:true}, function(err, doc){
          if (err) 
             return res.send(500, { error: err });
          return res.send("userdata updated successfully");
      });
      

      这里,如果对象不存在,“upsert = true”选项会创建该对象。

      默认为假。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-02-02
        • 2021-03-30
        • 2017-08-30
        • 1970-01-01
        • 2016-04-14
        • 1970-01-01
        • 2016-03-19
        相关资源
        最近更新 更多