嗨,我是nodejs和mongoose的新手。只是尝试使用以下方法使用批量插入更新mongo数据。
"use strict";
var mongo = require('../models/tracking_mongo');
var Schema = mongo.trackingMasterMongoosePoc.Schema;
//create a schema
var userwise_tracking_events = new Schema({
activities : {},
summary : {},
userId : Number,
counter : Number,
created : Date,
modified : Date
});
let collection = 'userwise_tracking_events';
let UserwiseTrackingEvents = mongo.trackingMasterConnPoc.model(collection, userwise_tracking_events);
UserwiseTrackingEvents.updateCollectionStream = function(condition, params, options, callback){
var Bulk = UserwiseTrackingEvents.collection.initializeUnorderedBulkOp();
Bulk.find(condition).upsert().update(params);
Bulk.execute(callback);
};
module.exports = UserwiseTrackingEvents;
上层代码工作正常,但这并没有解决我使用批量插入的问题。
然后我只是通过使批量变量全局化来进行更改。
"use strict";
var mongo = require('../models/tracking_mongo');
var Schema = mongo.trackingMasterMongoosePoc.Schema;
//create a schema
var userwise_tracking_events = new Schema({
activities : {},
summary : {},
userId : Number,
counter : Number,
created : Date,
modified : Date
});
let collection = 'userwise_tracking_events';
let UserwiseTrackingEvents = mongo.trackingMasterConnPoc.model(collection, userwise_tracking_events);
var Bulk = UserwiseTrackingEvents.collection.initializeUnorderedBulkOp();
UserwiseTrackingEvents.updateCollectionStream = function(condition, params, options, callback){
Bulk.find(condition).upsert().update(params);
Bulk.execute(callback);
};
module.exports = UserwiseTrackingEvents;
现在获取未定义的错误发现不是一个函数。
我检查时
的console.log(UserwiseTrackingEvents.collection);
使用NativeCollection.collection给我的结果为null。
让我知道我做错了什么。
我有另外一种方法可以解决这个问题,但我特别想知道我在这个问题上做错了什么。
谢谢:)
答案 0 :(得分:0)
我冒昧地说,当你移出函数调用时,你的Bulk声明不在任何函数声明之外。因此,当调用公开函数时,Bulk未初始化。