Mongoose Bulk upsert not working

时间:2017-03-29 14:24:13

标签: node.js mongodb mongoose

嗨,我是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。

让我知道我做错了什么。

我有另外一种方法可以解决这个问题,但我特别想知道我在这个问题上做错了什么。

谢谢:)

1 个答案:

答案 0 :(得分:0)

我冒昧地说,当你移出函数调用时,你的Bulk声明不在任何函数声明之外。因此,当调用公开函数时,Bulk未初始化。