Javascript 文档中的NodeJS和MongoDB更新数组
我有以下代码:Javascript 文档中的NodeJS和MongoDB更新数组,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我有以下代码: exports.addUser = function(req, res, next) { req.assert('email', 'Email is not valid').isEmail(); req.assert('password', 'Password must be at least 4 characters long').len(4); req.assert('confirmPassword', 'Passwords do not match').equa
exports.addUser = function(req, res, next) {
req.assert('email', 'Email is not valid').isEmail();
req.assert('password', 'Password must be at least 4 characters long').len(4);
req.assert('confirmPassword', 'Passwords do not match').equals(req.body.password);
req.assert('firstName','First Name is empty').notEmpty();
req.assert('lastName','Last Name is empty').notEmpty();
var errors = req.validationErrors();
if (errors) {
req.flash('errors', errors);
return res.redirect('/user/account-users/add');
}
var user = new User({
email: req.body.email,
password: req.body.password,
profile: {
role: req.body.role,
firstName: req.body.firstName,
lastName: req.body.lastName,
screenName: req.body.screenName,
addressOne: req.body.addressOne,
addressTwo: req.body.addressTwo,
country: req.body.country,
stateProvince: req.body.stateProvince,
postalCode: req.body.postalCode
}
});
User.findOne({ email: req.body.email }, function(err, existingUser) {
if (existingUser) {
req.flash('errors', { msg: 'Account with that email address already exists.' });
return res.redirect('/user/account-users/add');
}
user.save(function(err) {
if (err) return next(err);
Account.findOne( { users: { $elemMatch: { _id: req.user._id } } }, function(err, account) {
var accountId = account._id;
if(err) req.flash('errors', err);
Account.update( { _id: accountId }, { users: { $push: user } }, function(err, result){
console.log(result)
if (err) return next(err);
res.redirect('/user/account-users');
});
});
});
});
};
当前,当用户向其帐户添加其他用户时,此代码将清除添加用户的帐户文档
如何正确地将新创建的用户添加到当前用户所属的帐户文档中?我看不到正在创建[user]的位置。第一行中的匿名回调函数返回[existingUser]。看起来您正试图将此[user]文档推送到Accounts集合中文档中的users数组中。@MichaelBlankenship我有一个用户,我只是不把它放在注释中。现在我已经在第一篇文章中添加了完整的请求inf。如果是这样的话,那么在这一部分中[Account.update{{u id:accountId},{users:{$push:user},]。。。我猜您已经选择更新整个文档,而不仅仅是要插入到该数组中的部分。您可能需要做的是查找同一文档,保存其信息,修改保存的信息,然后使用它更新存储的文档。