【问题标题】:nodejs export variable from functionnodejs从函数导出变量
【发布时间】:2015-06-25 02:51:32
【问题描述】:

我想从下面的“./models/devices-client.js”中导出变量“result_array”

var config = require('./config');
var MongoClient = require('mongodb').MongoClient;

MongoClient.connect(config.dbadmin_uri, function (err, db) {
if (err) throw err;
// console.log('Successfully connected');
var collection = db.collection('repvpn2');
collection.find().toArray(function (err, result_array) {
// console.log('Found results:', result_array);
    module.exports.Hosts = result_array;
    db.close();
    });
});    

但是当导入另一个文件时,它会打印“未定义”?

var Hosts = require('./models/devices-client').Hosts;
console.log(Hosts);

【问题讨论】:

标签: node.js


【解决方案1】:

让您的模块接受异步函数回调。

// JavaScript source code
var config = require('./config');
var MongoClient = require('mongodb').MongoClient;
module.exports = function (callback) {
    MongoClient.connect(config.dbadmin_uri, function (err, db) {
        if (err) throw err;
        // console.log('Successfully connected');
        var collection = db.collection('repvpn2');
        collection.find().toArray(function (err, result_array) {
            // console.log('Found results:', result_array);
            callback(err, result_array);
            db.close();
        });
    });
}

require('./models/devices-client')(function callback(err,Hosts) {
   //Hosts Here
});

【讨论】:

  • $ node repcert.js /home/irek/repvpn/node_modules/mongodb/lib/utils.js:97 process.nextTick(function() { throw err; }); ^ ReferenceError: results_array 未在 /home/irek/repvpn/models/devices-client.js 中定义
  • 错字,result_array 不是results_array。对不起
猜你喜欢
  • 2019-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
  • 1970-01-01
  • 2018-09-07
  • 1970-01-01
相关资源
最近更新 更多