填充 Mongodb

Populate in Mongodb

我对 Mongodb 的工作方式感到很困惑。 这些是我的方法的控制器。 当我在我的页面中提交表单时,"populate()" 仅在我为我的网站充值时才有效。” 但是我需要在提交时这样做。 假设我需要在我的添加案例控制器中添加 "populate()" 选项。

不知道如何让它工作

/**
    * Get Cases
    *
    * @method get
    * @param req {Object} Request from http
    * @param res {Object} response to http
    */
    function get(req,res){

        var response = {
            code:400,
            result:{}
        };

        var skip = (req.body.skip)?req.body.skip:0;
        var limit = (req.body.limit)?req.body.limit:20;
        var query = {};

        var caseCb = function(err,caseDoc){
            if(err){
                res.json(response);
                return;
            }
            response.code = 200;
            response.result = caseDoc;
            res.json(response);
        };

        params.Pandem.case_model.find(query).populate('disease').exec(caseCb)
    }


/**
     * Add Case
     *
     * @method add
     * @param req {Object} Request from http
     * @param res {Object} response to http
     */
    function add(req,res){

        var response = {
            code:400,
            result:{}
        };

        var caseObj = {
            name: req.body.name,
            location: [req.body.location.longitude,req.body.location.latitude],
            disease:req.body.disease._id
        };


        var caseCb = function(err,caseDoc){
            if(err){
                response.result = err;
                res.json(response);
                return;
            }
            response.code = 200;
            response.result = caseDoc;
            res.json(response);
        };
        params.Pandem.case_model.create(caseObj,caseCb);
    }

Populate 仅适用于 find(),但您在 'add' 函数中所做的是创建 Pandem 文档。如果您想 return Pandem 文档,在创建后填充死亡,您可以在创建文档后调用 populate。

var caseCb = function(err,caseDoc){
    if(err){
        response.result = err;
        res.json(response);
        return;
    }

    caseDoc.populate('disease', function (err, caseDocPopulated){
      response.code = 200;
      response.result = caseDocPopulated;
      res.json(response);
    })
};
params.Pandem.case_model.create(caseObj,caseCb);