获取.populate()中的选定字段waterline-postgresql .populate(' fieldName',{select:[]})

时间:2015-07-08 11:59:40

标签: node.js sails.js waterline sails-postgresql

选择查询在waterline-postgresql的.populate()中无法正常工作。

{{1}}

这在waterline-postgresql适配器中不起作用。

这是不支持还是我犯了错误?

2 个答案:

答案 0 :(得分:5)

.populate()不支持

select 。你可以看到这个github issue。在populate中,select当前不起作用。

  

这是功能请求,是开放式问题。希望在下一个版本中   水线团队将介绍此功能。

答案 1 :(得分:0)

由于没有正式的方法,我做了一些改变才能拥有。也许这不是最好的方式,但它有效。

User.find({ belongs_to: user.id })
.populate('person_id')
.exec(function findCB (err, usersFound)
{
    console.log(usersFound[0].toJSON())

    if (err)
    {
        return res.json(401, {error: err});
    }

    if (usersFound.length == 0)
    {
        return res.json(200, {message: 'No user asigned'});
    }
    else
    {
        // An array to store all the final user objects
        var asignedArray = [];

        for (index in usersFound)
        {
            var myObj = {},
                key,
                value;

            // Object in format {key: value}
            myObj['id'] = usersFound[index].id;
            myObj['fullname'] = usersFound[index].person_id.first_name + ' ' +
                                usersFound[index].person_id.second_name + ' ' +
                                usersFound[index].person_id.last_name;
            myObj['email'] = usersFound[index].email;
            myObj['job'] = usersFound[index].person_id.job;
            myObj['permission_level'] = usersFound[index].permission_level;

            // Adding the object to the main array
            asignedArray.push(myObj);
        }

        return res.json(200, {
            users: asignedArray
        });
    }
    });

我希望它对你有用。