MongoDB定时触发保存错误——返回什么?



这个问题很烦人。因此,我要创建一个调度触发器每24小时运行一次。它只是从一个集合中获取项,进行一些数据处理,然后将信息附加到另一个集合。功能代码工作即使在函数运行时也是如此。但是它不允许我保存,因为有&;runtime&;错误吗?即使它被完美地执行并返回。

控制台错误

> result (JavaScript): 
EJSON.parse('{"$undefined":true}')

我想这与返回有关。但是当我返回null时,我得到这个:

> result: 
null
> result (JavaScript): 
EJSON.parse('null')

当尝试保存时,我在页面顶部得到这个:

runtime error during function validation

函数代码:

exports = async function() {
const usersCol = context.services.get("SchoologyDashCluster").db("SchoologyDashApp").collection("users");
const gradesCol = context.services.get("SchoologyDashCluster").db("SchoologyDashApp").collection("grades");
var usersCusor = await usersCol.find( ).toArray();
var gradesCusor = await gradesCol.find( ).toArray();
let insert = [];
for (let i = 0; i < usersCusor.length; i++) {
var user = usersCusor[i];
var userSavedGrades = gradesCusor[i].grades
var currentGrades = await getGrades(user.schoologyUID, user.consumerKey, user.secretKey);

var lastGraded = NaN;
let index = gradesCusor[i].grades.length - 1;

while (true) {
if (gradesCusor[i].grades[index].changed == 1) {
lastGraded = index;
break
}
index = index - 1;
}
console.log(lastGraded)
if (userSavedGrades[lastGraded].grades.ga == currentGrades.ga){
currentGrades = { changed : 0, time: new Date().getTime()};
} else {
currentGrades = {changed : 1, grades: currentGrades, time : new Date().getTime()};
}


gradesCol.updateOne(
{"user" : user._id},
{"$push" : {"grades" : currentGrades}}
)
}
// return usersCol.find( );


return null;
};

答案很简单,现在我觉得自己很无知。出于本能,我把模块导入放在了文档的顶部。然而,这是不正确的,它们需要放在exports函数中,如下所示:

exports = function (x,y,z) {
const http = context.http;
return;
}

最新更新