我有以下的项目文档与开发人员领域。我想推送从mySQL查询返回的多条记录。
/* project document */
{
"_id" : ObjectId("5ad77d2ccec38c21b8cbea0b"),
"description" : "blah blah blah",
"startDate" : null,
"completedOn" : null,
"lastStatusOn" : null,
"status" : "Unassigned",
"devTime" : "00:00:00.0000000",
"devLevel" : "Basic",
"estDevTime" : "00:00:00.0000000",
"developers" : [],
"notes" : [],
"__v" : 3
}
我从mySQL返回了以下数据。
[ RowDataPacket { userid: 'jd1234', fullName: 'Joh Doe' },
RowDataPacket { userid: 'jd5678', fullName: 'Jane Doe' } ]
我想将这些数据推入项目文档中的developers数组中。
期望的结果:
/* project document */
{
"_id" : ObjectId("5ad77d2ccec38c21b8cbea0b"),
"name" : "shopping cart",
"description" : "blah blah blah",
"startDate" : null,
"completedOn" : null,
"lastStatusOn" : null,
"status" : "Unassigned",
"devTime" : "00:00:00.0000000",
"devLevel" : "High",
"estDevTime" : "00:00:00.0000000",
"developers" : [
{ userid: 'jd1234', fullName: 'Joh Doe' },
{ userid: 'jd5678', fullName: 'Jane Doe' }
],
"notes" : [],
"__v" : 3
}
我有以下代码。我没有得到错误,但开发人员没有被插入。
router.post('/saveDeveloper', async (req, res) => {
let userList = req.body.attuid,
users = userList.split(',').map(attuid => `'${attuid.trim()}'`).join(',');
mySQLdb.connect();
let sql = `SELECT userid, fullName FROM users WHERE userid IN (${users})`;
mySQLdb.query(sql, function (err, results) {
if (err) throw err;
console.log(results);
Project.update(
{_id: req.body.projectID},
{"$push": {
"developers": {"$each": results}
}
}
);
res.json(results);
});
mySQLdb.end();
});
我遗漏了什么?
发布于 2018-05-11 02:14:20
这是因为您返回的是第一个查询的结果,即sql
查询。results
是由sql
查询返回的数组,您将发送该数据作为响应。
如果要发送更新后的结果,则必须发送更新集合后获得的结果的响应,然后在.update(..
的回调函数中获得更新后的结果,如下所示
此外,您必须处理数据results
才能将其转换为json
,因此您可以添加以下步骤来操作results
var string=JSON.stringify(results);
var json = JSON.parse(string);
Project.update(
{_id: req.body.projectID},
{"$push": {
"developers": {"$each": json }
}
},function(err,resp){
res.json(resp)
}
);
https://stackoverflow.com/questions/50278877
复制相似问题