我在开发人员字段中有以下项目文档。我想推送从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();
});
我错过了什么?提前谢谢你的帮助!
答案 0 :(得分:0)
这是因为您要返回第一个查询的结果sql
。
results
是sql
查询返回的数组,您将发送该数据作为响应。
如果你想发送更新的结果,你必须在更新集合后得到的结果的响应中发送;你会在.update(..
的回调函数中得到更新的结果。 / p>
此外,您必须处理数据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)
}
);