【发布时间】:2017-03-07 07:50:21
【问题描述】:
我对 Mongoose 很陌生,我正在尝试熟悉它,但糟糕的文档并没有帮助(没有搜索,没有函数列表,..)。
我有一个代表公司的文档,以及代表用户的子文档:
{
"_id": "57ffa47f5b70f90831212348",
"name": "mycompany",
"address": "...",
"phone": "...",
"users": [
{
"_id": "57ffa47f5b70f90831212347",
"username": "alpha",
"name": "myname",
"surname": "mysurname",
"password": "..."
}
]
}
我想找到一个特定的子文档并仅更新从前端传递的一些字段(姓名、姓氏、密码……)。
我收到包含已编辑字段(即 req.body.name)的 req.body 和包含已登录用户的 req.user:
"company_shortname": "CMPNY",
"company_id": "57ffa47f5b70f90831212348",
"user": {
"id_access_level": 0,
"surname": "ltd",
"name": "mycompany",
"username": "mycompanyusername",
"_id": "57ffa47f5b70f90831212347",
"password": "..."
}
}
我要获取的是找到编辑的子文档(包含该子文档的公司将始终与登录的用户相同),更新传递的数据,并保存。
使用这个answer,我试过了:
Company.find({'_id': req.user.company_id}).select('name').exec(
function(err, company) {
if (err) res.status(500).send(err);
var partialUpdate = req.body;
var set = {};
for (var field in partialUpdate) {
set['users.$.' + field] = partialUpdate[field];
}
company.update({_id: req.user._id, "users._id": req.body._id},
{$set: set},
function(err, numAffected) {
console.log('Number of users edited: ' +JSON.stringify(numAffected,null,4));
});
});
但我无法让它工作..有什么想法吗?
【问题讨论】:
标签: javascript node.js mongoose