我正在尝试将新数据添加到用户模型中,并且很难使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)
在我的代码中,我看不到自己在做什么。在邮递员中测试路线时,我没有任何错误。谁能对此有所启发?
答案 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
}
);