【问题标题】:Is this the proper way to use promises with Sequelize.js?这是在 Sequelize.js 中使用 Promise 的正确方法吗?
【发布时间】:2015-02-10 16:38:22
【问题描述】:
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 是一个具有User 模型和Entity 模型的Sequelize 对象。我想先创建一个用户,然后为该用户创建一个实体。这是将事物链接在一起以使 Promise 有用的正确方法吗?

【问题讨论】:

  • @SLaks 好文章!它有几个(小)错误——我该向哪里报告?另外 - 由于 promise 现在有一个相当固定的创建语法,您可能想要使用该语法(promise 构造函数而不是 deferred)
  • @BenjaminGruenbaum:谢谢!我确实提到了 Promise 构造函数,就在延迟之后。请注意,这不仅与 JS 承诺有关。您可以在博文中留下 cmets,甚至可以发送拉取请求 (github.com/SLaks/SLaks.Blog/blob/gh-pages/_posts/…)

标签: javascript promise sequelize.js


【解决方案1】:

如果您将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);
});

让一切变得美好而统一。

【讨论】:

  • 这实际上是coffee script 转换的保留=)
【解决方案2】:

是的;这是完全正确的。

【讨论】:

    猜你喜欢
    • 2012-05-11
    • 2018-12-31
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多