Подтвердить что ты не робот

Ссылка типа Mongodb node

Я пытаюсь ссылаться на другой объект в модели в 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, но не мог найти документацию на нем, может кто-то мне помочь. Благодаря

4b9b3361

Ответ 1

Я нашел ответ на свой вопрос здесь.

User = new Schema({
    username: {
        type: String,
        index: {unique: true}
    }
});

Idea = new Schema({
    Creator: {
        type: Schema.ObjectId,
        ref: 'User'
    }
});

Ответ 2

Я хотел бы добавить ответ на этот вопрос, потому что это первый результат в 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
});

Таким образом вы можете изменить адресный объект, чтобы сделать изменения доступными для всех ваших схем, совместно использующих объект.

Ответ 3

Ниже приведена ссылка в руководстве @refs.

Tho Вы не можете использовать refs на уровне дизайна схемы.

Ответ 4

Я решил решить аналогичную проблему для моего проекта, сделав свой поддокумент вложенным типом

    Foo = new Schema({
        name: String,
        bar: {
            name: String
        }
    });

Очевидно, что это не сработает, если вам нужно, чтобы Bar была собственной моделью. Возможно, потому, что вы ссылаетесь на нее как на модель других объектов. В моем случае это было все, что мне нужно было сделать, но раздел Subdocuments руководства Mongoose не упоминает его как вариант, поэтому я добавляю к этому обсуждению.