0
我得到以下在生產環境中的錯誤,我已經在分期和開發環境測試此代碼,但其造成的唯一生產環境d.collection在生產環境nongoclient異步瀑布不是一個函數的NodeJS
#node /home/abc/xyz/current/packages/omi-worker/bulk_load_devices.js
Error:
There is error while connecting to mongo client
/home/abc/xyz/releases/20170630032343/packages/omi-worker/node_modules/mongodb/lib/mongo_client.js:456
throw err
^
TypeError: db.collection is not a function
at /abc/xyz/viewpoint/releases/20170630032343/packages/omi-worker/src/device.js:71:14
at nextTask (/home/abc/xyz/releases/20170630032343/packages/omi worker/node_modules/async/dist/async.js:5297:14)
at next (/home/abc/xyz/releases/20170630032343/packages/omi-worker/node_modules/async/dist/async.js:5304:9)
at /home/abc/xyz/releases/20170630032343/packages/omi-worker/node_modules/async/dist/async.js:906:16
at /abc/xyz/viewpoint/releases/20170630032343/packages/omi-worker/src/device.js:63:15
at connectCallback (/home/abc/xyz/releases/20170630032343/packages/omi-worker/node_modules/mongodb/lib/mongo_client.js:505:5)
at /home/abc/xyz/releases/20170630032343/packages/omi-worker/node_modules/mongodb/lib/mongo_client.js:453:13
at _combinedTickCallback (internal/process/next_tick.js:73:7)
at process._tickCallback (internal/process/next_tick.js:104:9)
一個錯誤
以下是節點腳本的片斷,其處理在臨時哈希一些數據並創建MongoDB的連接和數據插入到數據庫
#!/usr/bin/env node
var MongoClient = require('mongodb').MongoClient;
var service = require('./service');
var service_1 = require('./service_1');
var service_2 = require('./service_2');
var database = require('./../utility/database');
var fs = require('fs');
var moment = require('moment');
var GLOBAL = require("./../config/global");
var _ = require('lodash');
var async = require('async');
var log4js = require('log4js');
var path = require('path');
var logFilepath = path.join(__dirname, './../config/log4js.json');
var logConfig = fs.readFileSync(logFilepath);
log4js.configure(logConfig);
var logger = log4js.getLogger('bulk_load_devices');
var mongo_server = GLOBAL.MONGO_SERVER.url;
module.exports = {
bulkLoad: function() {
async.waterfall(
[
// Update devices details from service_1
function(callback) {
var big_bacon = service_1.bulkLoad(data);
callback(null, big_bacon);
},
function(big_bacon, callback) {
var commands = service_1.update_command_table(big_bacon);
callback(null, big_bacon, commands);
},
// Update devices details from service_2
function(big_bacon, commands, callback) {
big_bacon = service_2.bulkLoad(big_bacon);
callback(null, big_bacon, commands);
},
// Connect to mongoclient for database operations.
function(big_bacon, commands, callback) {
MongoClient.connect(mongo_server, function(err, db) {
if (err) {
logger.debug('There is error while connecting to mongo client');
console.log('There is error while connecting to mongo client');
callback(null);
} else {
callback(null, db, big_bacon, commands);
}
});
},
// Bulk insert process commands data into temporary command worker.
function(db, big_bacon, commands, callback) {
console.log("collection======" + db.collection);
db.collection(GLOBAL.COMMAND_WORKER).insertMany(commands, function(err, r) {
callback(null, db, big_bacon);
})
}
] ],
function(err, result) {}
);
},
prepareData: function() {
var processData = [];
var deviceData = service.getDeviceList();
async.each(deviceData, function(device, callback) {
var currentTime = moment(moment()).format('YYYY-MM-DD HH:mm Z');
record = {
guid: device['properties']['guid'],
};
processData.push(record);
});
return processData;
}
}
嘿@Aikon MOGWAI感謝這個修正,但我的問題是我收到錯誤db.collection是不是在生產環境中的功能,可以幫助我在這裏 –
'db.collection'是不是一個功能,因爲' db'等於'undefined'。當然,undefined'沒有方法'collection'和其他的。您在生產上連接到MongoDB時遇到問題。你必須檢查db連接參數,並且如上所述更改代碼。 –
謝謝我調試更多我得到錯誤 錯誤跟蹤== MongoError:無法連接到第一次連接到服務器[MongoError:連接超時] –