Ответ 1
Я нашел ответ на свой вопрос здесь.
User = new Schema({
username: {
type: String,
index: {unique: true}
}
});
Idea = new Schema({
Creator: {
type: Schema.ObjectId,
ref: 'User'
}
});
Я пытаюсь ссылаться на другой объект в модели в node,
User = new Schema({
username: {
type: String,
index: {unique: true}
}
});
Idea = new Schema({
Creator: {
type: User
}
});
но я получаю эту ошибку Undefined type at "creator" Did you try nesting Schemas? You can only nest using refs or arrays.
Я считаю, что хочу использовать refs, но не мог найти документацию на нем, может кто-то мне помочь. Благодаря
Я нашел ответ на свой вопрос здесь.
User = new Schema({
username: {
type: String,
index: {unique: true}
}
});
Idea = new Schema({
Creator: {
type: Schema.ObjectId,
ref: 'User'
}
});
Я хотел бы добавить ответ на этот вопрос, потому что это первый результат в Google.
Нет, вы не можете использовать вложенную схему, как говорят другие ответы. Но вы все равно можете использовать один и тот же объект в другой схеме.
// Regular JS Object (Not a schema)
var Address = {
address1: String,
address2: String,
city: String,
postalcode: String
};
var Customer = new Schema({
firstname: String,
lastname: String,
address: Address
});
var Store = new Schema({
name: String,
address: Address
});
Таким образом вы можете изменить адресный объект, чтобы сделать изменения доступными для всех ваших схем, совместно использующих объект.
Ниже приведена ссылка в руководстве @refs.
Tho Вы не можете использовать refs на уровне дизайна схемы.
Я решил решить аналогичную проблему для моего проекта, сделав свой поддокумент вложенным типом
Foo = new Schema({
name: String,
bar: {
name: String
}
});
Очевидно, что это не сработает, если вам нужно, чтобы Bar была собственной моделью. Возможно, потому, что вы ссылаетесь на нее как на модель других объектов. В моем случае это было все, что мне нужно было сделать, но раздел Subdocuments руководства Mongoose не упоминает его как вариант, поэтому я добавляю к этому обсуждению.