Mongodb Sails Mongo-在查询时从数据库检索所有填充的数据

Mongodb Sails Mongo-在查询时从数据库检索所有填充的数据,mongodb,associations,sails.js,waterline,Mongodb,Associations,Sails.js,Waterline,我不熟悉航海。我有两个模型User.js和Project.js。ProjectMember.js是链接两个模型的模型。 User.js Project.js module.exports = { attributes: { name: { type: 'string', required: true, unique: true }, description: { type: 'string' },

我不熟悉航海。我有两个模型User.js和Project.js。ProjectMember.js是链接两个模型的模型。 User.js

Project.js

module.exports = {

attributes: {

    name: {
        type: 'string',
        required: true,
        unique: true
    },
    description: {
        type: 'string'
    },
    company: {
        type: 'string',
        required: true
    },
    members: {
        collection: 'ProjectMember',
        via: 'project',
        dominant: true
    }
 }
}
ProjectMember.js

module.exports = {

attributes: {

    project: {
        model: 'Project'
    },
    user: {
        model: 'User'
    },
    projectRole: {
        model: 'ProjectRole'
    },
    deletedAt: {
        type: 'datetime',
        defaultsTo: null
    }
 }
}
我希望以这样一种方式从项目模型检索数据,即它也从其他模型检索关联的模型/集合。除了像这样浏览所有模型外,还有什么方法可以做到这一点:

        Project.find({
            id: projectID
        }).populate('members').exec(function (err, results) {
            async.each(results, function (result, error) {
                if (err) {
                    retObj.type = "failure";
                    retObj.message = "Error in getting user list";
                    callback(retObj);
                } else {
                    var ids = [];
                    for (var i = 0; i < result.members.length; i++) {
                        User.findOne({
                            id: result.members[i].user
                        }, function (err, resp) {
                            var userObject = new Object();
                            userObject.userID = resp.id;
                            if (err) {
                                retObj.type = "failure";
                                retObj.message = "Error in getting user list";
                                callback(retObj);
                            } else {
                                userObject.company = resp.company;
                                userObject.email = resp.email;
                                userObject.userName = resp.userName;
                                ids.push(userObject);
                                if (ids.length == result.members.length) {
                                    callback(ids);
                                }
                            }
                        });
                    }
                }
            });
        });
Project.find({
id:projectID
}).populate('members').exec(函数(错误、结果){
async.each(结果、函数(结果、错误){
如果(错误){
retObj.type=“失败”;
retObj.message=“获取用户列表时出错”;
回调(retObj);
}否则{
var-id=[];
对于(var i=0;i

提前感谢。

我尝试使用中给出的方法。但是它说,“试图填充一个不存在的属性,是否可以调用一个像:User.findOne({email:'abc@abc.com.projects.project'].exec(函数(err,doc){res.send(doc);};抱歉,链接的目的是向您表明,您想要的当前内容是不可能的,但他们是与此问题相关的其他人,这就是围绕Ithanks展开的讨论,感谢您的回复。
        Project.find({
            id: projectID
        }).populate('members').exec(function (err, results) {
            async.each(results, function (result, error) {
                if (err) {
                    retObj.type = "failure";
                    retObj.message = "Error in getting user list";
                    callback(retObj);
                } else {
                    var ids = [];
                    for (var i = 0; i < result.members.length; i++) {
                        User.findOne({
                            id: result.members[i].user
                        }, function (err, resp) {
                            var userObject = new Object();
                            userObject.userID = resp.id;
                            if (err) {
                                retObj.type = "failure";
                                retObj.message = "Error in getting user list";
                                callback(retObj);
                            } else {
                                userObject.company = resp.company;
                                userObject.email = resp.email;
                                userObject.userName = resp.userName;
                                ids.push(userObject);
                                if (ids.length == result.members.length) {
                                    callback(ids);
                                }
                            }
                        });
                    }
                }
            });
        });