我正在设置一个基于 id 搜索用户的函数,如果没有找到用户,它会创建一个新用户。我还没有用户,所以查询永远不会返回用户。但是,我无法成功检查这种情况。 find
查询为空时究竟返回什么?
User.find(id,(error,user)=>{
if(error){
console.log(error);
}else{
if(user == [] || user == null || user == undefined || user == {} || user == '[]'){
User.addUser({"fbID":id,"lastMessage":"[]"},(error,response)=>{
if(error){
console.log(error);
}else{
console.log(response);
}
});
}else{
console.log("User exists.");
}
}
});
最佳答案
首先让我们考虑一下您的条件:
user == [] || user == null || user == undefined || user == {} || user == '[]'
user == []
将始终为 false。甚至[] == []
也总是假的。- 如果您正在测试
user == null
那么您不需要user == undefined
反之亦然,因为null == undefined
始终为真(与null === undefined
不同)。 user == {}
将始终为 false。甚至{} == {}
也总是假的。
如果 user == '[]'
可以为真,但这在 Mongo 中永远不会发生
user
字面上包含字符串 []
,则 这是检查是否找到任何东西的方法:
对于User.find
:
User.find({}, (err, users) => {
// users is an array which may be empty for no results
if (err) {
// handle error
return;
}
if (users.length) {
// there are user(s)
} else {
// there are no users
}
});
对于User.findOne
:
User.findOne({}, (err, user) => {
// user is a single document which may be null for no results
if (err) {
// handle error
return;
}
if (user) {
// there is user
} else {
// there is no user
}
});
对于User.findById
:
User.findById(id, (err, user) => {
// user is a single document which may be null for no results
if (err) {
// handle error
return;
}
if (user) {
// there is user
} else {
// there is no user
}
});
关于node.js - 当 find 查询为空时,mongoose 会返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45172700/