1
我在NodeJS中構建了一個REST API後端,並在本地進行了測試。我試圖運行一個cron作業,從數據庫中清除過期的「登錄令牌重置代碼」,即臨時爲重置密碼而創建的代碼。我基本上執行一個Mongoose查詢,並重新保存一些數據。未在NodeJS中調用Mongoose查詢回調cronjob
我用下面的步驟來創建在Mac OSX cron作業:
crontab -e
i
* * * * /usr/local/bin/node PATH_TO_NODE_FILE > PATH_TO_OUTPUT_FILE
Esc
ZZ
該作業列於crontab -l
,應該每分鐘執行一次。
劇本是很簡單的:
require('./../helpers/global.js')(); // Setup Global
var User = require('./../models/user.js'); // Import User Model
User.clearLoginTokenResetCodes(); // Call function to perform database query and modification
,並使用console.log
,其輸出到了的cronjob運行日誌文件,我可以確認和讀取文件。
然而,在用戶模型文件的功能塊:
userSchema.statics.clearLoginTokenResetCodes = function() {
console.log('clearLoginTokenResetCodes()');
var self = this;
self.find({'loginTokenResetCode.expiryDate': {$lt: (new Date())}}).exec(function(err, users) {
console.log('Searched');
});
};
在日誌文件中,我收到'clearLoginTokenResetCodes()'
但不'Searched'
- 特別是,我的貓鼬find()
查詢永遠不會完成。我可以通過在普通的節點服務器上調用它來證實這一點。
在Mongo完成搜索之前,cronjob可能會結束。這可能是背後的問題,因此解決方案?
哇。我真的很傻。我怎麼錯過那行代碼!一些代表爲你。 – MCKapur