我需要当前模块中其他模块功能的结果。我该怎么办呢。
module1.js
var module2=require('./lib/module2');
module2.getValue();
现在我想在getValue方法中返回'true'。我怎么能到这里来。
在下面的其他语言中,代码可以正常工作
var result=module2.getValue();
但是在node.js中我们必须使用回调方法来获取该值。我怎么能这样做。
module2.js
exports.getValue=function(){
console.log('getValue method called.');
return true;
};
最后我也改变了我的module1代码,但我没有把结果变为true.Below是我更新的module1代码
var module2=require('./lib/module2');
module2.getValue();
以下是我的确切代码
server.js
var express = require('express')
, http = require('http');
var app = express();
app.configure(function(){
app.use(express.static(__dirname + '/public'));
});
var server = http.createServer(app);
var io = require('socket.io').listen(server);
server.listen(8000);
var cradle=require('cradle');
new(cradle.Connection)('https://mydomain.iriscouch.com/', 5984, {
cache: true,
raw: false
});
cradle.setup({
host: 'mydomain.iriscouch.com',
cache: true,
raw: false
});
var c = new(cradle.Connection);
exports.connObj=c;
var notifications=require('./lib/Notifications');
var notificationId="89b92aa8256cad446913118601000feb";
console.log(notifications.getNotificatiosById(notificationId));
Notifications.js
var appModule=require('../server');
var connectionObj=appModule.connObj;
var db = connectionObj.database('notifications');
exports.getNotificatiosById=function(notificationId){
db.get(notificationId, function (err, doc) {
console.log(doc);//im getting output for this line while running server.js file
return true;
});
};
答案 0 :(得分:0)
所以你有这个方法:
exports.getNotificatiosById = function (notificationId) {
db.get(notificationId, function (err, doc) {
console.log(doc); //im getting output for this line while running server.js file
return true;
});
};
有内部回调函数。在这种情况下,getNotificatiosById
无法从db.get
内部返回值。您应该阅读this。
我不知道您使用的是哪个数据库系统,但可能在API中有同步版本,即db.getSync
。然后我们可以这样做:
exports.getNotificatiosById = function (notificationId) {
return db.getSync(notificationId);
};
但是在NodeJS中我们几乎总是使用(并且想要使用)回调函数,因为执行脚本的是非阻塞方式。无论您对这些内容有何了解,我都会推荐Introduction to Node.js视频,其中节点的创建者解释了很多。