【发布时间】:2018-02-16 11:53:47
【问题描述】:
如何提供用户名和密码并检查用户是否已存在,如果不存在,我想创建用户。所以它基本上应该是一个get或create函数。
我认为可能是这样的
const username = 'username';
const password = 'password';
User.findOne({ username }).then(existingUser => {
if (!existingUser) {
return User.create({ username, password }).then(newUser => {
return newUser;
}).catch(console.error);
}
existingUser.comparePassword(password, (err, isMatch) => {
if (!isMatch) { return null; }
return existingUser;
});
}).catch(console.error);
问题是我完全理解如何构建承诺。
我想我应该只有 1 个 catch 而不是本例中的 2 个。
那么,我该如何构建这样的结构,以便始终返回用户(无论是现有用户还是新用户)或 null?
【问题讨论】: