model.findByIdAndUpdate()未更新

时间:2018-10-16 01:30:08

标签: javascript node.js mongodb mongoose

我正在尝试将新数据添加到用户模型中,并且很难使findByIdAndUpdate()正常工作。它将不会使用新对象更新模型。

这里是我打电话给findByIdAndUpdate()并尝试添加对象的地方:

    const User = require('../../models/api/user');

    const customer = {
        name: 'Quick Pizza & Subs',
        address: '1234 Example Lane',
        zip: 432123
    };

    User.findByIdAndUpdate(userId, customer, { new: true }, (err, user) => {
        if(err) { console.log(err) };
    });

在上面的代码块中,我可以验证是否使用userId变量找到了正确的用户。当我console.log(user)时,我找回了正在寻找的用户。我只是不知道为什么传入的对象不会更新为找到的用户集合。

用户架构:

const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
    username: {
        type: String,
        default: ''
    },
    password: {
        type: String,
        default: '',
    },
    registerDate: {
        type: Date,
        default: Date.now()
    }
});

module.exports = mongoose.model('User', UserSchema);

根据猫鼬文档,这就是我要做的全部事情:

Model.findByIdAndUpdate(id, { name: 'jason bourne' }, options, callback)

在我的代码中,我看不到自己在做什么。在邮递员中测试路线时,我没有任何错误。谁能对此有所启发?

3 个答案:

答案 0 :(得分:0)

要更新我通常使用的内容,我看不到您在代码中的任何地方使用$set,希望此帮助:

User.findByIdAndUpdate(
userId,
{
  $set: {
    customer
  }
},
{ new: true },
(err, user) => {
  if (err) return res.json(err)
  return res.json(user)
}
)

答案 1 :(得分:0)

我尚未添加带有客户字段的更新的用户架构。工作模式为:

const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
    username: {
        type: String,
        default: ''
    },
    password: {
        type: String,
        default: '',
    },
    customer: {
        type: Object,
        default: ''
    },
    registerDate: {
        type: Date,
        default: Date.now()
    }
});

module.exports = mongoose.model('User', UserSchema);

答案 2 :(得分:0)

我遇到了同样的问题,并且可以通过使用 await 调用该方法来使其工作。下面的示例:

const updatedEmployee = await Employee.findByIdAndUpdate(
  _employeeID,
  {
    _businessUnits
  },
  {
    new: true
  }
);