这是使用Sequelize.js的承诺的正确方法吗?

时间:2015-02-09 19:53:14

标签: javascript promise sequelize.js

var newUser;

newUser = {
  name: req.body.name,
  email: req.body.email,
  username: req.body.username,
  password: req.body.password
};

global.db.User.create(newUser).then(function(dbUser) {
  var newEntity;
  newEntity = {
    name: newUser.name + " Default Entity"
  };
  return global.db.Entity.create(newEntity);
}).then(function(dbEntity) {
  console.log(dbEntity);
  return res.json(dbUser.display());
})["catch"](function(err) {
  console.log(err);
  return next(err);
});

global.db是一个Sequelize对象,具有User模型和Entity模型。我想首先创建一个用户,然后为该用户创建一个实体。这是将事物联系起来以使承诺有用的正确方法吗?

2 个答案:

答案 0 :(得分:2)

如果您将catch调用为.catch()而不是["catch"],则可能更干净:

global.db.User.create(newUser).then(function(dbUser) {
  var newEntity;
  newEntity = {
    name: newUser.name + " Default Entity"
  };
  return global.db.Entity.create(newEntity);
}).then(function(dbEntity) {
  console.log(dbEntity);
  return res.json(dbUser.display());
}).catch(function(err) {
  console.log(err);
  return next(err);
});

使一切变得美好和均匀。

答案 1 :(得分:1)

是;这是完全正确的。