我正在使用MEAN堆栈,并且在猫鼬中为我的模型定义了一些自己的函数:
DemoSchema.method({
tsFromID: function() {
var datenow = +new Date(+new Date()+60*1000*60*2);
var dateless15 = datenow - 1000*60*15;
//console.log(new Date(datenow));
//console.log(new Date(dateless15));
//ist das als 15 Minuten?
return +this.Timestamp >= +dateless15;},
checkID: function() {return this._id;}
});
现在,如果我使用mongoose / MongoDB执行查询以获取文档结果, 我只能将那些方法与通过“查找”查询方法执行(找到)的结果集一起应用:
DemoSchema.find({}).exec(function(err,result) {
for (elem of result) {
console.log("Alter:", elem.tsFromID())
}
}),..
但是,如果我尝试将该方法应用于来自聚合框架的文档结果,则该方法不适用于结果文档,它说“方法” ...不是函数。为什么呢从聚合返回的文档是游标类型的对象?或有什么区别?下面是一个示例。
DemoSchema.aggregate([
{
$addFields: {
subID: {
"$eq": [{"$trunc": {"$divide": ["$_id", 1000000]}},+req.params.demo_id]
}
}
},
{
"$match": { subID:true }
},
{
"$sort": {"Timestamp":-1}
},
{
"$limit": 1
}
/*
{
"$group": {
"_id": "$subID",
lastID : {$first: "$Timestamp"}
}
}
*/
]).exec(function(err, flPot) {
console.log("Anzahl gefundener Dokumente: ", flPot.length)
res.json(flPot)
console.log("Timestamp < 15 min ?", flPot.tsFromID())
for (let elem of flPot) {
console.log(elem);
console.log("Timestamp: ", elem.Timestamp)
console.log("Jünger als 15 min?:", elem.tsFromID())
}
}
)