水线:访问模型中的填充值

时间:2015-05-24 05:06:39

标签: node.js orm sails.js waterline

我正在使用sails.js来开发我的第一个应用。我有一个waterline模型,如下所示。

//ModelA.js
module.exports = {
    attributes: {

        //more attributes

        userId: {
            model: 'user'
        },

        //more attributes
    }
};

我在我的一个控制器中使用该模型,如下所示。

  ModelA.find(options)
                .populate('userId')
                .exec(function (err, modelA) {
                    //some logic
                    //modelA.userId is undefined here
                    res.json(modelA); //userId is populated in the JSON output

                });

如何访问模型中的填充值?

2 个答案:

答案 0 :(得分:1)

ModelA.find返回项目数组。

       ModelA.find(options)
        .populate('userId')
        .exec(function (err, results) {
            console.log(results[0].userId) //results is an array.
            //res.json(modelA); 

        });

或者您可以将ModelA.findOne用于单个记录

答案 1 :(得分:1)

这是因为find返回一组记录。您必须使用index来访问该对象,然后使用该对象的userId。

ModelA.find(options).populate('userId').exec(function (err, recordsOfModelA) {
    if(err) console.log(err);
    else console.log(recordsOfModelA[0].userId)
});