我正在MongoDB中创建Stitch函数,并得到未定义的结果,而不是double。
我正在使用iOS数据库开发一个MongoDB应用程序。我正在创建Stitch函数,并使用callFunction(withName:withArgs:_:)方法。我写了一个函数来计算早晨的平均值。我想把早上的值返回给app。下面是代码。
exports = function(DAY,MONTH){
var total = 0.0;
var count = 0.0;
var morning = 0.0;
var collection = context.services.get("mongodb-atlas").db("database_name").collection("collection_name");
var docs = collection.find({month: { $eq: MONTH },
day: { $eq: DAY },
hour: { $gte: 8 },
hour: { $lt: 13 }
}).toArray().then((data) => {
data.forEach((el) =>{
total = total + el.value;
count = count + 1.0;
});
morning = total/count;
console.log("morning");
console.log(morning);
return {morning};
})
.catch((error) => {
console.log(error);
return {morning};
});
};“输出”
早上869.5729166666666
结果:{ "$undefined":true } result (JavaScript):EJSON.parse({“$undefined”:true})
“输出的-end”
我试图返回的早晨值是双倍,但它返回BSONUndefined。当我试图从iOS应用程序获得结果时,我会得到“BSONUndefined()”,但是在返回语句之前,它会正确地将早间值打印到stitch控制台。
发布于 2019-08-13 18:28:17
以这种方式在return find()查询之前使用find()语句
exports = function(DAY,MONTH){
var total = 0.0;
var count = 0.0;
var morning = 0.0;
var collection = context.services.get("mongodb-atlas").db("database_name").collection("collection_name");
return collection.find({month: { $eq: MONTH },
day: { $eq: DAY },
hour: { $gte: 8 },
hour: { $lt: 13 }
}).toArray().then((data) => {
data.forEach((el) =>{
total = total + el.value;
count = count + 1.0;
});
morning = total/count;
console.log("morning");
console.log(morning);
return {morning};
})
.catch((error) => {
console.log(error);
return {morning};
});
};发布于 2019-07-15 06:08:22
您没有编写集合,{它正在发送$undefined:true}
解决方案1返回collection.find结果
return collection.find({month: { $eq: MONTH },
day: { $eq: DAY },
hour: { $gte: 8 },
hour: { $lt: 13 }
}).toArray().then((data) => {
data.forEach((el) =>{
total = total + el.value;
count = count + 1.0;
});
morning = total/count;
console.log("morning");
console.log(morning);
return {morning};
})
.catch((error) => {
console.log(error);
return {morning};
});解决方案2:
返回文档本身
var docs = collection.find({month: { $eq: MONTH },
day: { $eq: DAY },
hour: { $gte: 8 },
hour: { $lt: 13 }
}).toArray().then((data) => {
data.forEach((el) =>{
total = total + el.value;
count = count + 1.0;
});
morning = total/count;
console.log("morning");
console.log(morning);
return {morning};
})
.catch((error) => {
console.log(error);
return {morning};
});
return docshttps://stackoverflow.com/questions/56966667
复制相似问题