控制器需要为传递的数组中的每个对象创建记录?我是否创建了for循环?
以下是我所拥有的:
Agent.findOneById(req.query[0].agentId, function(err, agent) {
console.log(agent);
for (i = 0; i < req.query.length; i++) {
Record.findOrCreate({userDN: req.query[i].userDN}, {
name: req.query[i].name,
owner: agent.id
}).exec(function (err, newRecord) {
if (err) return res.negotiate(err)
res.json(newRecord);
})
}
这创建了一个对象,数组中有15个项目。
根据请求,来自数组的一个对象:
query:
{ '0':
{ userDN: '99999',
name: 'Test User',
agentId: '4' },
答案 0 :(得分:2)
使用内置Bluebird library。具体而言,Promise.all()。
代码示例(也使用lodash forEach
来简化事情):
var Promise = require('bluebird');
...
Agent.findOneById(req.query[0].agentId, function(err, agent) {
console.log(agent);
var promises = [];
_.forEach(req.query, function(record) {
promises.push(Record.findOrCreate({userDN: record.userDN}, {
name: record.name,
owner: agent.id
}));
});
Promise.all(promises)
.then(function(records) {
res.json(records);
})
.catch(function(err) {
return res.negotiate(err);
})
}