猫鼬自己的模式方法不适用于聚合框架结果

时间:2018-06-29 07:20:05

标签: node.js mongodb mongoose schema

我正在使用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()) 
        }
    }
    )

0 个答案:

没有答案