Запрос Sails.js по связанному значению

Я использую версию Sails.js 0.10.0-rc4. Все модели используют паруса-mysql.

Я пытаюсь запросить модель, которая имеет ассоциацию "один ко многим" с другой моделью (запрос выполняется со стороны "много" ).

Это выглядит примерно так:

Post.find()
    .where({ category: category_id })
    .populate("category")
    .exec( ... )

Это дает мне пустой массив, однако, когда я оставляю .populate("category"), я получаю правильный набор результатов.

Я знаю, что я мог бы выйти из .populate("category"), а затем получить каждый связанный объект Category отдельно, но мне интересно, есть ли лучшее решение этой проблемы.

Ответ 1

На 100% не понятно, что вы пытаетесь сделать здесь. Если ваша цель - отфильтровать категории, которые заполняются на Post, вы можете сделать:

Post.find()
    .populate("category", {where: { category: category_id }})
    .exec( ... )

Если вы хотите получить только Post с определенной категорией, вы должны:

Category.findOne(category_id)
        .populate("posts")
        .exec(function(e, c) {console.log(c.posts);})

Ответ 2

Оригинальное сообщение было слишком скоро

Следующие работы для меня (паруса 0.12) с населением:

Post.find({category: category_id})
    .populate("category")
    .exec( ... )

Но я все еще озадачен тем, кто ищет в подзапросе любой другой атрибут, чем id.

Edit2: похоже, что глубокий запрос еще не поддерживается: https://github.com/balderdashy/waterline/issues/266