Почему массив в моей модели mon goose мешает мне делать запросы - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть следующий mon goose модель

 CartSchema = new Schema({
  company: String,
  items: [{
    _id: Schema.ObjectId,
    price: Number,
    gears: [String]
   }],
 });

Я получаю к нему доступ через этот запрос simpe

const response = await Cart.findOne( { "items": { _id: "5e4d7a5bcff77131f46d8aa9" } });

И это мои данные в базе данных mon go

enter image description here

Итак, из этой информации мы можем видеть, что единственная информация, которая у меня есть в моей базе данных, которая соответствует модели, это items[0]._id, которая должна быть найдено с помощью запроса выше. Странно то, что он возвращает ноль, пока эта строка gears: [String], находится в моей модели. Это не требуется (я также пытался установить его вручную на required : false, но я не могу получить свои данные, если эта линия находится в моей модели. Если я удаляю линию из моей модели, я могу получить данные просто отлично.

Я упускаю здесь что-то очевидное, что помешало бы мне получить мои данные из-за линии gears: [String] в моей модели?

1 Ответ

3 голосов
/ 30 апреля 2020

таким образом, { "items": { _id: "5e4d7a5bcff77131f46d8aa9" } }, вы ищете точное совпадение, items должно быть object содержит только указанное _id

вместо этого, вы должны использовать dot notation для фильтрации по _id в массиве items

const response = await Cart.findOne( { "items._id": "5e4d7a5bcff77131f46d8aa9" });

надеюсь, что это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...