Ответ 1
Похоже, что был ошибкой, его исправили в Mongoose 2.0!
У меня есть данные в 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
})
}
... мое приложение не запускается (Schema
is not type, поддерживаемый Mongoose). То же самое для
{
name: String,
location: Object
}
... что бы не было идеальным.
Мне что-то не хватает или мои схемы не jive с Mongoose?
Похоже, что был ошибкой, его исправили в Mongoose 2.0!
Я сделал что-то подобное:
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
"Внедрение отдельных документов не может быть и речи. Это не очень хорошая идея (просто используйте обычные вложенные объекты)"
Джош