将对象数组发布到sails控制器中

时间:2015-09-30 18:45:39

标签: node.js sails.js

控制器需要为传递的数组中的每个对象创建记录?我是否创建了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' },

1 个答案:

答案 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);
    })
}