我编写了一个节点脚本,该脚本从数据库中删除了旧的电子邮件邀请。最终,该脚本将每天作为cron作业运行。数据库调用所有工作正常,并且数据库已正确设置并且可以正常工作,但是当我尝试从命令行手动测试此脚本时,出现TypeError。我目前不担心脚本是否最佳或功能设置有误,我只是想让它从cmd正常运行而没有错误。
这是我正在运行的脚本:
const inviteRepo = require('../app/repos/invite')
exports.start = function (cb) {
console.log('beginning function')
inviteRepo.all((err, myInvites) => {
if (err) {
console.log(err)
return cb(err)
}
if (myInvites) {
let invite
let n = Date.now()
let cutoff = 7 // number of days after which invites get deleted
n += Number(n) - cutoff
for (invite in myInvites) {
if (Number(invite.sentAt) < n) {
inviteRepo.delete(invite._id, (err, results) => {
if (err) {
console.log(err)
return cb(err)
}
})
}
}
}
})
}
this.start() // for testing purposes
以下是用inviteRepo.all
调用的函数:
exports.all = (cb) => {
db.invites.find().toArray((err, myInvites) => {
if (err) return cb(err)
if (myInvites.length === 0) {
return cb(null, [])
} else if (myInvites.length > 0) {
return cb(null, myInvites)
}
})
}
这是我收到的错误消息:
db.invites.find().toArray((err, myInvites) => {
^
TypeError: Cannot read property 'find' of undefined
该脚本显然可以很好地访问vitreRepo文件,并且由于在vitalRepo文件(const db = require('../../mongodb')
中需要数据库),我不明白为什么未定义db.invites。我需要手动导入原始脚本还是需要其他脚本?
预先感谢您;我仍然熟悉node.js和在程序正常运行之外运行脚本。