为什么该节点脚本会引发TypeError?

时间:2019-06-24 18:55:52

标签: node.js mongodb cmd cron

我编写了一个节点脚本,该脚本从数据库中删除了旧的电子邮件邀请。最终,该脚本将每天作为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和在程序正常运行之外运行脚本。

0 个答案:

没有答案