订购q.all承诺

时间:2016-01-13 15:50:57

标签: asynchronous promise sequelize.js q async.js

我试图使用q.all()和create()函数将用户数组插入到续集数据库中,如下所示:

var users = [{
      provider: 'local',
      role: 'user',
      name: 'Test user 1',
      email: 'test@example.com',
      password: 'test',
      gender: 'f'
    }, {
      provider: 'local',
      role: 'admin',
      name: 'Test user 2',
      email: 'test2@example.com',
      password: 'admin',
      gender: 'm'
    }];

    var userIDs = [];

    return q.all([
      User.create(users[0]),
      User.create(users[1])
    ])
    .then(function(data) {

      async.eachSeries(data, function(newUser, cb) {

        userIDs.push(newUser.dataValues._id);
        cb();

      }, function() {

        console.log('finished populating users');
        deferred.resolve(userIDs);

      });

    })
    .catch(function(err) {

      console.log(err);

    });

这有效,我可以在以后访问用户ID,但不幸的是,data中返回的用户并不总是以相同的顺序创建。如何使其成为异步,以便始终首先创建测试用户1,然后一旦完成,创建测试用户2?

感谢您的帮助

0 个答案:

没有答案