我想運行Forever的後臺進程,每小時將數據從外部服務添加到我的MongoDB數據庫(我是新的節點,並不知道如何做到這一點)。我正在使用節點與Express並運行使用Mongoose回調不工作使用Forever
forever -o out.log -e err.log start background/collector.js
所以我有一些來自過程的反饋。代碼如下:
var request = require('request');
var mongoose = require('mongoose');
var Model = require('../models/Model.js');
// Starting the collector process
addNewData();
function addNewData() {
request('external_service_url', function (error, response, body) {
if (!error && response.statusCode == 200) {
var models = JSON.parse(body);
console.log('Adding the new models...')
for(var i = 0; i < models.length; i++)
{
console.log(i);
Model.create(models[i], function (error, post, result) {
console.log('Test');
if (error) console.log('Something went wrong adding the document!');
if (! result.updatedExisting)
{
console.log('A new document has been added!');
}
});
}
console.log('Models added: ' + models.length);
// Every hour we will collect new data
console.log('Waiting for an hour...');
setTimeout(addNewData, 36000000);
}
})
}
我不知道爲什麼,但似乎.create()
回調不工作,放在創建回調裏面的console.logs未顯示在日誌中任何東西。永遠不與貓鼬一起工作?你有什麼想法嗎?
哦,你是對的,我在我的app.js文件中連接到mongodb,但是這個腳本與app.js文件無關。似乎現在正在工作。你是對的,我的意思是迴音對不起,我總是混淆兩個詞!我知道我不是同步創建文檔,但我不介意在這種情況下,似乎工作正常。非常感謝! – miquelarranz
@miquelarranz是的。在'app.js'或其他「主模塊代碼」中連接是長時間運行的應用程序的標準。但這個「腳本」當然是stanalone,所以你需要在那裏做。這裏的其他建議是你真的需要遵循的,以免你將來遇到問題。 –
是的,我欣賞的意見:)我測試知道腳本,似乎setTimeout不工作,腳本不斷添加新的文件。也許它與一切異步工作的事實有關?任何想法? – miquelarranz