如何提供用户名和密码并检查用户是否已存在,如果不存在,我想创建用户。所以它应该基本上是一个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个捕获而不是2个,如本例所示。
那么我怎样才能构建这样的结构,以便我总是返回用户(无论是现有的还是新的)还是null
?
答案 0 :(得分:0)
我想我应该只有1个捕获而不是2个,如本例所示。
是的,你应该。
那么我怎样才能构建这样的结构,以便我总是返回用户(无论是现有的还是新的)还是null?
您可以使用以下解决方案:
const username = 'username';
const password = 'password';
User
.findOne({ username })
.then(existingUser => {
if (!existingUser) {
return User.create({ username, password });
}
return new Promise((resolve, reject) => existingUser.comparePassword(password, (err, isMatch) => {
if (!isMatch) {
return reject(new Error('Incorrect password'));
}
resolve(user);
});
})
.catch(console.error);