получить выбранные поля в .populate() waterline-postgresql .populate('fieldName',{select:[]})

Запрос select не работает в .populate() Waterline-postgresql.

Model.find(query).populate(assoc.alias,{select:['field1','field2']});

Это не работает в адаптере waterline-postgresql.

Это не поддерживается или я ошибаюсь?


person Satyam Koyani    schedule 08.07.2015    source источник


Ответы (2)


select не поддерживается в .populate(). Вы можете увидеть эту ошибку github. При заполнении select в настоящее время не работает.

Это запрос функции, и это открытая проблема. надеюсь, что в следующем релизе команда Waterline представит эту функцию.

person Yogeshree Koyani    schedule 08.07.2015
comment
Обновление для всех, кто наткнется здесь, эта функция должна поддерживаться в Waterline 0.12.0, как написано в вопросе. github.com/balderdashy/waterline/issues/ - person carpiediem; 15.11.2017

Поскольку официального способа сделать это нет, я внес некоторые изменения, чтобы иметь это. Возможно, это не лучший способ, но он работает.

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
        });
    }
    });

Я надеюсь, что это может быть полезно для вас.

person alexventuraio    schedule 26.11.2015