2015-02-09 92 views
0
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模型。我想先创建一个用户,然后为该用户创建一个实体。这是将事情链接在一起让承诺有用的正确方法吗?这是在Sequelize.js中使用promise的正确方法吗?

+0

您可能还想阅读http://blog.slaks.net/2015-01-05/introducing-promises – SLaks 2015-02-09 19:56:33

+1

@SLaks不错的文章!它有几个(小的)错误 - 我在哪里报告给他们?此外 - 因为承诺现在有一个相当固定的创建语法,你可能想使用该语法(承诺构造函数,而不是延期) – 2015-02-10 08:39:18

+1

@BenjaminGruenbaum:谢谢!我提到承诺构造函数,在延期后。请注意,这不仅仅是关于JS承诺。您可以在博客文章留言,甚至发送拉请求(https://github.com/SLaks/SLaks.Blog/blob/gh-pages/_posts/2015-01-05-introducing-promises.md) – SLaks 2015-02-10 16:07:37

回答

1

是;这是完全正确的。

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

使一切好的和统一的:如果你调用catch作为.catch()而不是["catch"]

2

可能是更清洁。

+0

'catch'是一个关键字;这只会在ES6中起作用。 – SLaks 2015-02-10 16:05:33

+0

这实际上是来自'咖啡脚本'转换的保留=) – Shamoon 2015-02-10 16:15:41

相关问题