Node.js 猫鼬中承诺的返回值
我正在尝试一件非常基本的事情——在数据库中找到一个用户,并为找到的特定记录返回一个字段。我想用承诺,部分是为了教育目的Node.js 猫鼬中承诺的返回值,node.js,mongodb,promise,Node.js,Mongodb,Promise,我正在尝试一件非常基本的事情——在数据库中找到一个用户,并为找到的特定记录返回一个字段。我想用承诺,部分是为了教育目的 var username = "user1" // assuming this exists: User({username: "user1", city: "London"}) function getUser(username) { var promise = User.findOne({username: username}).exec(); var
var username = "user1" // assuming this exists: User({username: "user1", city: "London"})
function getUser(username) {
var promise = User.findOne({username: username}).exec();
var output = promise.then( function(user) {
return user.city;
}).catch(function(err) {
console.log(err);
});
return output;
}
对于上面给出的代码,假设有一个用户具有给定的数据,输出变量仍然是一个承诺。我怎样才能得到它的实际价值呢?我有一种预感,我的问题是return语句不是异步的,也就是说,我在实际解决之前返回输出。返回值的正确方法是什么?您返回承诺,要在承诺得到解决时获取值,您应该调用
,然后对返回的承诺调用:
function getUser(username) {
return User
.findOne({username: username})
.then(function(user) {
return user.city;
})
.catch(function(err) {
console.log(err);
});
}
// How to use getUser
getUser('John')
.then(function(city) {
console.log(city);
});
您返回承诺,要在承诺得到解决时获取值,您应该调用,然后对返回的承诺调用:
function getUser(username) {
return User
.findOne({username: username})
.then(function(user) {
return user.city;
})
.catch(function(err) {
console.log(err);
});
}
// How to use getUser
getUser('John')
.then(function(city) {
console.log(city);
});