Поддерживает ли Mongoose только встроенные документы в массивах? - PullRequest
11 голосов
/ 30 мая 2011

У меня есть некоторые данные в MongoDB, которые выглядят следующим образом:

{
    name: "Steve",
    location: {
        city: "Nowhere, IL",
        country: "The United States of Awesome"
    }
}

Я использую объекты для организации общих структур данных (например, местоположений), которые в Mongoose могли бы красиво отображаться в схемах.К сожалению, они не работают в Mongoose.

Если я просто встраиваю объект, например:

{
    name: String,
    location: {
        city: String,
        country: String
    }
}

Кажется, что он работает, но демонстрирует странное поведение, которое вызываетпроблемы для меня (например, instance.location.location возвращает location, а подобъекты наследуют методы из родительской схемы).Я создал поток в списке Mongoose, но он не видел никаких действий.

Если я внедряю схему, например:

{
    name: String,
    location: new Schema({
        city: String,
        country: String
    })
}

… myприложение не запускается (Schema не поддерживается типом Mongoose).То же самое для

{
    name: String,
    location: Object
}

… который не был бы идеальным, так или иначе.

Я что-то упустил или мои схемы не совместимы с Mongoose?

Ответы [ 2 ]

3 голосов
/ 31 мая 2011

Я сделал нечто похожее:

var Topic = new Schema({
      author    : ObjectId
    , title     : String
    , body      : String
    , topics    : [Topic]
});

В моих тестах это работало нормально.Однако удаление массива скобок привело к ошибке.Похоже, ошибка для меня.

https://github.com/LearnBoost/mongoose/blob/master/lib/mongoose/schema.js#L185

Типы дампа, я получаю только String, Number, Boolean, DocumentArray, Array, Date, ObjectId, Mixed - который, как представляется, специально, schema / index.jsне похоже, что он динамически регистрирует новые схемы в списке типов, поэтому я предполагаю, что это еще не поддерживаемый вариант использования.

https://github.com/LearnBoost/mongoose/issues/188

"Внедрение отдельных документовне может быть и речи. Это не очень хорошая идея (просто используйте обычные вложенные объекты) "

Джош

1 голос
/ 20 сентября 2011

Похоже, это было ошибкой , это было исправлено в Mongoose 2.0!

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