Sails Js populate don't retrieve all attributes

时间:2017-06-20 12:39:32

标签: javascript sails.js populate

I have a problem with populate. I made a query to get User, Project and Topic information (Those are my 3 models). I need to show multiples dates in profile view. This is my code:

Project.js:

module.exports = {

  attributes: {

    name: {
        type: "string"
    },

    topics: {
        collection: "topic",
        via: "projects"
    },

    members: {
        collection: "user",
      via: "projects"
    },

    content: {
        collection: "content",
        via: "projectData"
    }

  }
};

Topic.js:

module.exports = {

  attributes: {

    name: {
        type: "string"
    },

    projects: {
        collection: "project",
        via: "topics"
    }

  }
};

in User.js:

show: function(req, res, next) {
   User.findOne({id: req.session.User.id}).populateAll().exec(function prjFound(err, user){
  if (err) return next(err);
  if (!user) return next();
  console.log(user);
  res.view({
      user: user
  });
});

},

Console print this:

{ projects: 
   [ { name: 'Fran',
       createdAt: '2017-06-19T21:33:17.152Z',
       updatedAt: '2017-06-19T21:33:17.190Z',
       id: 97 },
     { name: 'River Plate',
       createdAt: '2017-06-19T21:36:38.757Z',
       updatedAt: '2017-06-19T21:36:38.798Z',
       id: 98 },
     { name: 'Guido',
       createdAt: '2017-06-20T01:33:53.843Z',
       updatedAt: '2017-06-20T01:33:53.926Z',
       id: 99 } ],
  group: [],
  mat: 222222,
  name: 'Francisco',
  lastname: 'P',
  email: 'fran@1.com.ar',
  encryptedPassword: '$2a$10$nKp/eAOCDPw4BS.PvQCThe42wa2/8ZABw4JzA0no9GPVT4VjFl3ZO',
  createdAt: '2017-06-19T21:32:10.535Z',
  updatedAt: '2017-06-19T21:32:10.535Z',
  id: '594842da6aeecd880ebab4e6'

}

I want to get all atributes of project model (Content, topic, and members), not only the name and id.

Anyone can explain Why my code is wrong?

3 个答案:

答案 0 :(得分:1)

帆/水线populate / populateAll执行1级人口。对于2级或更深级别,您需要为其编写代码 例如。收集用户项目的ID并在populateAll

上执行Project.find

答案 1 :(得分:1)

Sailsjs目前不支持人口稠密的人口。在返回的响应中写一个查询并将其附加到您要填充的字段,发送带有所需结果的响应。

答案 2 :(得分:0)

检查这个。

let result = await model.find(filter).populate("fieldName", {select:['attribute1','attribute1']})