Я написал скрипт узла, который удаляет старые почтовые приглашения из базы данных. В конце концов, этот скрипт будет запускаться ежедневно как задание 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
Сценарий, очевидно, обращается к файлу InviteRepo очень хорошо, и, поскольку база данных требуется в файле InviteRepo (const db = require('../../mongodb')
), я не понимаю, почему db.invites не определен. Нужно ли вручную импортировать или требовать что-то еще в исходном скрипте?
Спасибо заранее; Я все еще знакомлюсь с node.js и запускаю сценарии вне нормального функционирования программы.