Запрос 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