Sails.js: не удалось заполнить модель из-за неоднозначного использования - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть две модели, скажем, A и B .Это отношение 1: n, где одному A принадлежит один B , а B может принадлежать моему множеству A s.

Теперь, если возможно, B не должен знать обо всех A s, на которые он ссылается, поэтому я связываюсь только с A side.

Теперь я хочу найти все A s, которым принадлежит B с определенными критериями.Я в основном пробовал это:

A.find()
  .populate('B', {
    where: {
      someAttr: 1
    }
  })

Глядя на документацию, я нахожу это довольно похожим на пример там .

Теперь я получаю следующую ошибку:

Не удалось заполнить B из-за неоднозначного использования.Это единственное («модельное») объединение, которое означает, что оно никогда не ссылается на более чем одну связанную запись.Таким образом, передача подкритериев (т. Е. В качестве второго аргумента .populate()) не поддерживается для этой ассоциации, так как обычно она не имеет никакого смысла.Но вот в чем проблема - похоже, что-то вроде подкритерия (или чего-то) было предоставлено !

Могу ли я как-то заставить этот запрос работать, не давая B ссылка обратно на A ?Я чувствую, что это ненужное вздутие живота моделей.

Я сейчас использую Sails 1.0.1.

1 Ответ

0 голосов
/ 25 апреля 2018

Просмотр документов о втором аргументе subcriteria до populate:

При заполнении ассоциаций коллекций между двумя моделями, которые находятся в одной базе данных, ватерлиниикритерии могут быть указаны в качестве второго аргумента для заполнения.Это будет использоваться для фильтрации, сортировки и ограничения массива связанных записей (например, закусок), связанных с EACH первичной записью.

Один из способов сделать это - получитьзатем все записи фильтруют их или используют собственный запрос напрямую.

...