gpt4 book ai didi

node.js - 当 find 查询为空时,mongoose 会返回什么?

转载 作者:IT老高 更新时间:2023-10-28 13:33:41 27 4
gpt4 key购买 nike

我正在设置一个基于 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 == '[]'
  1. user == [] 将始终为 false。甚至 [] == [] 也总是假的。
  2. 如果您正在测试 user == null 那么您不需要 user == undefined 反之亦然,因为 null == undefined 始终为真(与 null === undefined 不同)。
  3. user == {} 将始终为 false。甚至 {} == {} 也总是假的。
  4. 如果 user 字面上包含字符串 [],则
  5. user == '[]' 可以为真,但这在 Mongo 中永远不会发生

这是检查是否找到任何东西的方法:

对于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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com