Невозможно установить ссылку на пользовательский документ в курсах мангуста - PullRequest
0 голосов
/ 19 февраля 2019

В настоящее время я работаю над RESTful API и пытаюсь сослаться на схему пользователей в документе курсов так, чтобы при отправке запроса POST на маршрут курса курс создавался в БД и имелкак одно из его полей ссылка на пользователя, который его создал.Однако, на всю жизнь, я не могу понять, почему поле «пользователь» не появляется при публикации.Кажется, что здесь довольно много таких вопросов в Stack, так что я, возможно, просто добавляю в кучу, но я попробовал их решения, и они не сработали для меня

var mongoose = require('mongoose')

var Schema = mongoose.Schema


var userSchema = new Schema({
    firstName: {
        type: String,
        required: true
    }, 
    lastName: {
        type: String,
        required: true
    }, 
    emailAddress: {
        type: String,
        required: true
    },  
    password: {
        type: String,
        required: true
    } 
});

var CourseSchema = new Schema({
    user: {type: Schema.Types.ObjectId, ref: 'User'}, //FOR some reason this is not showing up on any courses created using the 
    title: {
        type: String,
        required: true
    },
    description: {
        type: String,
        required: true
    },
    estimatedTime: {
        type: String
    },
    materialsNeeded: {
        type: String
    }
});

var User = mongoose.model('User', userSchema);
var Course = mongoose.model('Course', CourseSchema);

module.exports = {Course, User};

Вы видите здесь что-нибудь?что может помешать появлению пользовательского поля при создании нового курса?

Я приложил несколько снимков экрана для дальнейшего объяснения.

enter image description here Это первое изображениеЭкран аутентифицированных в настоящее время учетных данных пользователя (очевидно, поддельные данные).Это пользователь, который отправляет запрос POST для нового курса.Я ожидаю, что его информация будет прикреплена к курсу (см. Скриншот 3)

enter image description here На этом изображении показано тело отправленного запроса.Вы можете видеть, что пары ключ-значение соответствуют тому, что находится в CourseSchema.Я ожидаю, что поле «пользователь» будет создано после отправки запроса POST.

enter image description here Это последнее изображение представляет собой некоторые фиктивные данные, которые являются ожидаемым результатом.

Спасибо всем, что взглянули на это!

1 Ответ

0 голосов
/ 20 февраля 2019

Поле пользователя не будет автоматически добавлено в документ курса.Вы должны вручную установить поле пользователя в теле запроса или при создании курса.Пример отправляемого тела курса: -

{
 user: "userId", 
 title: "test",
 description: "test",
 estimatedTime: "test",
 materialsNeeded: 1
}

Кроме того, результат этого не будет включать весь пользовательский документ, как вы упомянули в ожидаемом результате.Он вернет только userId.Однако при доступе к курсу вы можете заполнить поле пользователя, чтобы получить весь пользовательский документ.Пример для того же

Course.find({...query}).populate("user")
...