Node.js Mongoose find仅返回对象的精确属性
我在MongoDB中使用Mongoose,我发现了这个问题。我在数据库中找到一个对象,然后只返回object属性,但当我调用变量时,它返回整个对象,而不是想要的属性Node.js Mongoose find仅返回对象的精确属性,node.js,mongodb,mongoose,find,Node.js,Mongodb,Mongoose,Find,我在MongoDB中使用Mongoose,我发现了这个问题。我在数据库中找到一个对象,然后只返回object属性,但当我调用变量时,它返回整个对象,而不是想要的属性 var CharacterInDbCounter = await UserModel.findOne({battletag: req.user.battletag}, function(err, user){ if (err) { console.log(err); } else {
var CharacterInDbCounter = await UserModel.findOne({battletag: req.user.battletag}, function(err, user){
if (err) {
console.log(err);
} else {
return user.characters
}
})
console.log(CharacterInDbCounter);
返回:
{ _id: 5a25a14a05656b24accfe231,
id: 1234,
battletag: 'Something',
provider: 'bnet',
__v: 0,
characters:
[ 5a25a14a05656b24accfe218,
5a25a14a05656b24accfe219,
5a25a14a05656b24accfe21a,
5a25a14a05656b24accfe21b,
5a25a14a05656b24accfe21c,
5a25a14a05656b24accfe21d,
5a25a14a05656b24accfe21e,
5a25a14a05656b24accfe21f,
5a25a14a05656b24accfe220,
5a25a14a05656b24accfe221,
5a25a14a05656b24accfe222,
5a25a14a05656b24accfe223,
5a25a14a05656b24accfe224,
5a25a14a05656b24accfe225,
5a25a14a05656b24accfe226,
5a25a14a05656b24accfe227,
5a25a14a05656b24accfe228,
5a25a14a05656b24accfe229,
5a25a14a05656b24accfe22a,
5a25a14a05656b24accfe22b,
5a25a14a05656b24accfe22c,
5a25a14a05656b24accfe22d,
5a25a14a05656b24accfe22e,
5a25a14a05656b24accfe22f ] }
为了实现你的目标,你必须以正确的方式去做 不幸的是,当您使用
wait
时,您不能通过承诺catch
捕获错误catch
,您必须将代码包围在try/catch
中以捕获异常,然后在中检查用户
参数是否未定义或为空
try {
var CharacterInDbCounter = await UserModel.findOne({battletag: req.user.battletag})
.then(function(user) {
if (!user) {
// user not found
}
return user.characters
})
console.log(CharacterInDbCounter);
} catch(e) {
// catch unexpected errors
}
非常感谢,因为我最不想知道的是如何通过调试任何错误。然后,因为如果我使用函数(err,user)不起作用。像这样?var CharacterInDbCounter=await UserModel.findOne({battletag:req.user.battletag}).then(函数(用户){return user.characters}).catch(函数(err){return“err”;});这个错误处理在var CharacterToSaveCounter=wait CharacterModel.count({owner:req.user.battletag},function(err,count){if(err){console.log(err);}else上面的方法中工作的可能性有多大{返回计数;}})您应该看看这个答案,了解如何让MongoDB只返回您感兴趣的内容:我已经尝试过了,但即使我使用参数来选择我真正想要的内容,它总是返回一个带有_id和字符的对象,默认情况下,除非您在投影参数中说\u id:0
,我认为这是另一个问题不知道哪一个更好。
try {
var CharacterInDbCounter = await UserModel.findOne({battletag: req.user.battletag})
.then(function(user) {
if (!user) {
// user not found
}
return user.characters
})
console.log(CharacterInDbCounter);
} catch(e) {
// catch unexpected errors
}