У меня есть модель Мангуст, которая довольно проста:Mongoose запрашивая данные, которая нуждается в заполнении
aclSchema = mongoose.Schema({
_id: String,
public_read: Boolean,
public_write: Boolean,
});
aclModel = mongoose.model('acl', aclSchema);
И еще одна модель, которая ссылается на это:
thingSchema = mongoose.Schema({
_id: String,
_acl: { type: String, ref: 'acl' }
});
thingModel = mongoose.model('thing', thingSchema);
Мне нужно, чтобы быть в состоянии найти документы (thingModel), где _acl.public_read - это правда. Проблема, с которой я сталкиваюсь, заключается в том, что поскольку thing._acl является ref, он не заполняется до тех пор, пока запрос не будет выполнен.
пример:
thingModel.find({"_acl.public_read":true}).populate('_acl').exec(callback);
Это не возвращает никаких результатов, потому что, я думаю, _acl это ссылка, и это никогда не заполняется до тех пор, после того, как находка возвращает документы.
Просто боковое примечание, схемы сложнее, чем у этого, и в них есть другие реф, которые могут быть круговыми. Я не включил их для простоты, но основная идея есть. Если бы это было действительно так просто, я бы использовал поддокументы, и все будет работать так, как ожидалось.
Есть ли лучший способ сделать это, чтобы получить ожидаемые документы?
Точно, что мне нужно. Любой известный способ сделать это в <3.2? – Alex
@Alex ответ обновлен. http://stackoverflow.com/questions/19380738/mongoose-nested-query-on-model-by-field-of-its-referenced-model – sidgate