在这种情况下,为什么.pre find查询返回未定义?

时间:2018-12-21 11:45:53

标签: node.js mongodb mongoose

我刚刚了解了前/后钩子,我想对其进行测试。当我尝试console.log时(因此我可以看到它正在按预期运行),我不确定。我不明白为什么。

我试图将this.nume更改为this [“ nume”]。我以为它是可行的(因为在编程中有时您会得到意想不到的结果),即使是同样的事情。不幸的是,它没有用:(

我有这个预钩子

someriSchema.pre('find', function(next) {
    console.log(this.nume);
    next();
});

和此架构:

var someriSchema = new mongoose.Schema({
    nume: {type: String, required: true}
});

(我有一个执行查找查询的GET路由)。

为什么它返回未定义?我不明白我在做错什么吗?

///获取路线:

router.get('/judet/:id([0-9]{2})', middleware.access2, function(req, res)
{
      var title = "Dashboard";
      Somer.find({}, function(err, user)
      {
        if(err)
        {
            console.log(err);
        }
        else
        {
            res.render("dashboard", {title: title, id:req.params.id, someri:user});
        }
      });
});

1 个答案:

答案 0 :(得分:1)

在“查找” middleware中,this是指正在执行的查询,而不是集合中的文档。

因此,除非您的查询包含nume字段,否则this.nume将是未定义的。