我知道有很多類似於我的問題,但我無法找到最佳解決方案。 我正在用node和rethinkdb創建一個web應用程序。我想組織不同的js文件(模塊),以便每個文件都有特定的任務。 我有這個查詢結果必須傳遞到routes.js文件的query.js文件。 我試過用以下方法實現這個。將函數或變量導出到node.js中的另一個模塊
query.js
//dependencies
var express = require('express');
var path = require('path');
var r = require('rethinkdbdash')({
port: 28015,
host: 'localhost',
db: 'stocks'
});
var len;
//function to get companies list
exports.clist = function(){
r.table('company')
.run()
.then(function(response){
return response;
})
.error(function(err){
console.log(err);
})
}
console.log(exports.clist[0].id)
//function to get number of entries in database
exports.clen = function(){
r.table('company')
.run()
.then(function(response){
len = Object.keys(clist).length;
return len;
})
.error(function(err){
console.log(err);
})
}
routes.js
//dependencies
var express = require('express');
var request = require('request');
var path = require('path');
var r = require('rethinkdbdash')({
port: 28015,
host: 'localhost',
db: 'stocks'
});
//query module
var query = require('./query')
clist = query.clist();
clen = query.clen();
//create router object
var router = express.Router();
//export router
module.exports = router;
//home page
router.get('/', function(req, res) {
console.log('served homepage');
res.render('pages/home');
});
//--companies page--//
router.get('/company', function(req,res){
console.log('served companies page')
res.render('pages/company', {
clist: clist,
x:clen
});
});
控制檯日誌中query.js是示出可以不屬於R ead未定義的屬性ID。
另外我想知道有沒有辦法直接傳遞變量,而不是使用函數,然後調用它。 如果解決方案很明顯,我很抱歉。
總結我希望能夠從routes.js文件訪問對象的查詢結果。
由於'exp orts.clist1'是一種異步方法,你不能指望結果被打印在下一行。請按照下面的答案執行代碼。 – Aruna
由於'query.js'是異步執行的,我也更新了這個,以便正確處理這個問題。請檢查現在更新。 – Aruna