Mongo DB find()函数无法在Node js中工作


const User = require('./models/user')
module.exports = new class Users {
async get(token) {
return await User.find({"activeToken": token}).exec();
}
}

我的find函数总是返回"找不到你要找的东西";,我试过users.activateToken、User.activateToken和activateToken,但仍然不起作用。

{
"_id": "text",
"activeToken": "abcdefg",
"activated": "false",
"email": "email",
"__v": 0
}

抛出的错误只是";空";

函数我试图用运行它

bot.on('message',  async (message) => {


const user =  await users.get(message.content);
if (message.content == user.activeToken && !user.activated && message.channel.type == 'dm') {
user.discord_id = message.member.id;
const role = message.guild.roles.cache.get(config.member_role);
console.log("Test");
if(role){
try {
console.log("You Won");
message.member.roles.add(role);
message.author.send(replyText);
user.activated = true;
user.activeToken = "";

}
catch(err) {
console.log(err);
console.log("Error Occured");
}

}
}
else {
console.log(user);
}


})

这行代码

console.log(user);

return(0([]用";user.activeToken";

但返回(1([模型]只有常规的";activeToken";

用户模式:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;


//user schema
var UserSchema = new Schema({
_id: String,
discord_id: String,
email: String,
activeToken: {
type: String,
default: "",
},
activated: {
type: String,
default: false
},
});
const User = mongoose.model('User', UserSchema);
module.exports = User;

它总是返回该消息,因为当没有错误时,这就是您要记录的内容!

if (err) throw err;
console.log("Couldn't find what you were looking for");

如果出现错误,您将重新抛出它,因此不会执行console.log。

我认为您使用的是mongoose

函数应该像一样编写

async get(token) {
return await User.findOne({"activeToken": token}).exec()
}

您应该使用findOne来获得单个对象。

请参阅以获取完整描述:https://mongoosejs.com/docs/promises.html#built-承诺

最新更新