2015-06-24 14 views
-1

我想运行更新并为每个更新的资源发布消息。使用回调作为标准猫鼬查询运行时,它工作正常,但即使将资源输出到流中,也无法使用流作用。Mongoose在使用流时未更新()

var discount = { 
    startDate: process.env.START_DATE, 
    endDate: process.env.END_DATE, 
    funding: process.env.FUNDING, 
    percentage: process.env.PERCENTAGE 
} 


var connection = mongoose.createConnection(mongoEndpoint, config.mongo); 
var Resources = connection.model('Resources', resourcesSchema); 
var stream = Resources.update({_id:6375668}, { $push: { discounts: 'blob2' } }, { multi: true }); 

stream.on('data', function(resource) { 
    console.log('Updated resource + published message',resource._id, discount) 
    rabbit.publish('index-resource', resource); 
}); 

stream.on('end', function() { 
    console.log('Updated all resources in query'); 
    process.exit(0); 
}) 


var ResourceSchema = module.exports = new Schema({ 
    _id: Number, 
    discounts: Array 
}, {versionKey: false}); 
+0

嗯['.update()'](http://mongoosejs.com/docs/api.html#model_Model.update)当然不能返回['.stream()']( http://mongoosejs.com/docs/api.html#query_Query-stream),因为这是一个'Query'对象的方法,它不是'.update()'返回的。这只是一个简单的回调或承诺,也不会返回每个修改后的文档。 –

回答

0

它看起来像您的resourcesSchema在此处未定义?

var Resources = connection.model('Resources', resourcesSchema);

+0

没有。只是'.update()'不返回['stream'](https://nodejs.org/api/stream.html) –