使用承诺时重复的 Mongoose 日志条目
Duplicate Mongoose log entry when using promises
我已经在 mongoose 中实现了 promises,但是我收到了重复的日志条目,我不确定它是否是预期的输出,如果是,为什么?
我 运行 下面的函数,在 if 语句中只有一次。
const isUsernameTaken = (username) => {
let isTaken;
const promise = User.find({username: username}, (err, doc) => {
if(doc.length) {
isTaken = true;
} else {
isTaken = false;
}
}).exec();
promise.then(() => {
return isTaken;
});
}
mongoose 调试输出
Mongoose: users.find({username: 'test'}, {projection: {}})
Mongoose: users.find({username: 'test'}, {projection: {}})
true
与我的预期相比
Mongoose: users.find({username: 'test'}, {projection: {}})
true
似乎使用 find
的回调以及调用 exec()
发送了两次请求...将回调放在 promise.then(...)
中应该可以解决这个问题:
const isUsernameTaken = (username) => {
User.find({username: username})
.exec()
.then(doc => doc ? true : false)
.catch(err => console.log(err));
}
我已经在 mongoose 中实现了 promises,但是我收到了重复的日志条目,我不确定它是否是预期的输出,如果是,为什么?
我 运行 下面的函数,在 if 语句中只有一次。
const isUsernameTaken = (username) => {
let isTaken;
const promise = User.find({username: username}, (err, doc) => {
if(doc.length) {
isTaken = true;
} else {
isTaken = false;
}
}).exec();
promise.then(() => {
return isTaken;
});
}
mongoose 调试输出
Mongoose: users.find({username: 'test'}, {projection: {}})
Mongoose: users.find({username: 'test'}, {projection: {}})
true
与我的预期相比
Mongoose: users.find({username: 'test'}, {projection: {}})
true
似乎使用 find
的回调以及调用 exec()
发送了两次请求...将回调放在 promise.then(...)
中应该可以解决这个问题:
const isUsernameTaken = (username) => {
User.find({username: username})
.exec()
.then(doc => doc ? true : false)
.catch(err => console.log(err));
}