Node.js 被悬而未决的承诺所困扰
使用NodeJS和Mongoose,我试图创建一个数据库文件,允许我查询数据库并返回结果,以便在不使用Mongoose的情况下使用 在我的数据库文件中,我有这个 db.js 在我的另一个文件中,我称之为Node.js 被悬而未决的承诺所困扰,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,使用NodeJS和Mongoose,我试图创建一个数据库文件,允许我查询数据库并返回结果,以便在不使用Mongoose的情况下使用 在我的数据库文件中,我有这个 db.js 在我的另一个文件中,我称之为 var db = require('./db') var user_info = db.getUser("tom"); console.log(user_info); 当调用getUser函数时,它会正确地打印我在db.js文件中查找的信息,代码如下 console.log(user);
var db = require('./db')
var user_info = db.getUser("tom");
console.log(user_info);
当调用getUser函数时,它会正确地打印我在db.js文件中查找的信息,代码如下
console.log(user);
然而,我似乎找不到让数据库将值返回到用户信息的方法,我只是得到
Promise { <pending> }
Promise{}
我已经调查过了。然后又打了电话,但似乎不知道如何让它发挥作用。我总是在一个无休止的等待承诺的循环中结束
谢谢您必须致电
。然后
承诺获取结果:
检查这里
您必须致电
。然后
承诺获取结果:
检查这里
您需要调用
。然后为getUser调用
// db.js
module.exports = {
getUser: function (name) {
return User.findOne({
username: name
}).exec();
}
};
var db = require('./db');
db.getUser("tom").then((user) => {
console.log(user);
}).catch((err) => {
console.log(err);
});
您需要为getUser调用。然后调用
// db.js
module.exports = {
getUser: function (name) {
return User.findOne({
username: name
}).exec();
}
};
var db = require('./db');
db.getUser("tom").then((user) => {
console.log(user);
}).catch((err) => {
console.log(err);
});
承诺会兑现。但是,您可以在之后访问上的结果。然后
承诺会兑现。但是,在一次之后,您可以访问上的结果。然后
您得到了您想要的吗?您使用的是哪个节点版本?您是否获得了所需的?您使用的是哪个节点版本?非常感谢,如果用户中有一个名为username的字段,是否有办法从user_info中获取该字符串并将其分配给其他内容,例如var username=user_info。然后(user=>{return user.username;})代码>?是的。你完全可以做到。但是像这样:user\u info.then(user=>{var username=user.username;console.log(username);})
No我的意思是如果你想在user\u info.then()函数之外使用用户名,那么在user\u info.then()函数之前使用用户名
然后在用户信息之后。然后()。JS是异步的,因此,您需要知道db.getUser
操作何时完成。只有这样你才能使用结果。因此,。然后,
就像是一个可以确保用户
变量可用的地方。您可能还想查看等待异步
,但我强烈建议您在去那里之前彻底了解承诺。非常感谢,如果用户中有一个名为username的字段,是否有一种方法可以从user_info中获取该字符串并将其分配给其他内容,例如var username=user_info.then(user=>{return user.username;})代码>?是的。你完全可以做到。但是像这样:user\u info.then(user=>{var username=user.username;console.log(username);})
No我的意思是如果你想在user\u info.then()函数之外使用用户名,那么在user\u info.then()函数之前使用用户名
然后在用户信息之后。然后()。JS是异步的,因此,您需要知道db.getUser
操作何时完成。只有这样你才能使用结果。因此,。然后,
就像一个可以确保用户
变量可用的地方。您可能还想查看等待异步
,但我强烈建议您在去那里之前彻底了解承诺。
var db = require('./db')
var user_info = db.getUser("tom");
console.log(user_info);
user_info.then(user => {
const username = user.username;
console.log(username);
});