我使用 mongoose 和 Kue 进行流量控制。我将从数据库检索到的对象传递给 Kue。当作业得到处理时,该对象不再具有某些功能,例如 .save() 等。
jobs.process('process', 5, function(job, done) {
var url = job.data.url;
var objo = job.data.comp;
request({uri:url, json:true}, function(err, res, body) {
objo.meta = body;
// Here it throw an error that save is note defined
// TypeError: Object #<Object> has no method 'save'
objo.save(function(err) {
if (err)
throw err;
console.log('Saved data for ' + objo.title);
done();
});
});
});
var q = db.Entity.find({}).sort('_id', 1).limit(10);
q.execFind(function(err, docs) {
docs.forEach(function(objo) {
jobs.create('process', {
comp : objo,
url : 'http://example.com/' + encodeURIComponent(objo.permalink) + '.js'
}).save();
})
});
提前致谢
最佳答案
这是因为 Kue 并不完整保存对象,它只是保存调用 JSON.stringify()
的值。您需要传入对象的 id,并从工作程序的数据库中获取 Mongoose 表示。
关于node.js - Mongoose 和 Kue - Node.js - 传递的对象没有方法保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11521990/