2017-03-29 10 views
0

こんにちは、私はnodejsとmongooseを初めて使っています。次のメソッドを使用して、一括挿入でmongoデータを更新しようとしています。Mongoose Bulk upsertが動作しない

"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

私は、関数呼び出しの外に移動したときにバルクのあなたの宣言は任意の関数宣言の外ではないことを言ってベンチャー企業です。したがって、公開された関数が呼び出されると、Bulkは初期化されませんでした。

+0

バルクが初期化されていますが、バルーンが初期化されたときにmongooseが接続を作成できません。 –

関連する問題