我正在MongoDB中创建缝合功能,并且结果未定义,而不是两倍。
我正在使用MongoDB数据库开发iOS应用。我正在创建针迹函数,并使用callFunction(withName:withArgs:_ :)方法。我编写了一个函数来计算平均早晨值。我想将早上值返回给应用。这是下面的代码。
@PreAuthorize("@securityService.isAllowToDeleteSomeObject(#.id)")
public void delete(@PathVariable("id") final Long id) {
}
“”“输出”“”
早晨 869.5729166666666
结果: { “ $ undefined”:是 } 结果(JavaScript): EJSON.parse('{“ $ undefined”:true}')
“”“-输出结束”“”
我正在尝试返回两倍的早晨值,但是它返回BSONUndefined。当我尝试从iOS应用获得结果时, “”“上午:BSONUndefined()”“” 但是在return语句之前,它将打印早晨值以正确地缝制控制台。
答案 0 :(得分:0)
您未编写集合,{正在发送$ 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 docs
答案 1 :(得分:0)
以这种方式在MongoDB return
查询之前使用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};
});
};