我的userProfileController.js 结果未定义
var UserProfileSerice = require('../../Services/User/UserProfileService.js');
module.exports = function(app){
app.get('/tester' , ensureAuthenticated, function(req, res){
var sonuc ;
UserProfileSerice.getUserByEmail(function(result){
sonuc = result;
})
console.log('sonuc' +sonuc);
res.render('UserPages/userPage');
})
}
和
此函数位于UserProfileSerice.js文件中 我无法得到结果 回调无效
var UserModel = require('../../Models/User/UserModel.js');
var thinktConfig = require('../../Utils/rethinkdb/config.js');
var thinky = require('thinky')(thinktConfig.rethinkdb);
module.exports ={
getUserByEmail : function (callback) {
UserModel.filter({email: "slmkrnz@gmail.com"}).run().then(function(result) {
callback(result);
});
}}
答案 0 :(得分:1)
这只是因为您正在进行的通话是异步的。定义了回调,但执行尝试在回调返回之前执行console.log(myResult)。我敢打赌,如果你用这个代替你的代码:
var myResult;
UserModel.filter({username : 'selim'}).run().then(function(result){
myResult = result;
console.log("inside callback", myResult); // write result
});
console.log("outside callback", myResult); // do not write
您将在控制台中看到:
"outside callback" undefined
"inside callback" myResultValue
但是,如果你想要的是在其他地方重用我的结果的值,那么你需要在执行完成后回调另一个方法。您将需要执行以下操作:
var otherMethod = function(data){
console.log(data);
};
var myResult;
UserModel.filter({username : 'selim'}).run().then(function(result){
myResult = result;
console.log("inside callback", myResult); // write result
otherMethod(myResult);
});
这样,您应该会在otherMethod