在Mongodb居住

时间:2015-01-30 04:14:53

标签: node.js mongoose

我对Mongodb的工作方式感到困惑。 这些是我的方法的控制者。 当我在页面中提交表单时,“populate()”仅在我为我的网站充值时才有效。“ 但是当我提交时,我需要这样做。 假设我需要在Add Cases控制器中添加“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);
    }

1 个答案:

答案 0 :(得分:1)

填充仅适用于find(),但您在添加'中所做的事情。函数正在创建一个Pandem文档。如果要返回Pandem文档,并在创建后填充decease,则可以在创建文档后调用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);