Схема не была зарегистрирована для модели в схеме, но не для других из того же источника - PullRequest
1 голос
/ 26 мая 2020

Я пытаюсь заполнить маршрут узла express информацией из схем и продолжаю получать эту ошибку. Я не могу понять, что я ссылаюсь на три разных поля в одной и той же точной схеме, и по какой-то причине я получаю эту ошибку только для одного из этих полей.

Это моя функция маршрута, которую я получаю " MissingSchemaError: Схема не была зарегистрирована для модели "completed_by_user" "

// Schemas
const Transaction = require ("../models/transaction");
User              = require ("../models/user");
Ticket            = require ("../models/ticket");
Job               = require ("../models/job");
Client            = require ("../models/client");

// Functions
let numberWithCommas = require("../functions/numberWithCommas");

module.exports = function(app) {

    // =======================Tickets

// index
app.get("/tickets", function(req, res){
    Ticket.find({}).populate("created_by", "assigned_user", "completed_by_user").exec(function(err, tickets){  //This is where it happens
        if(err){
            console.log(err)
        } else {
            res.render("tickets", {tickets: tickets});
        }
    });
});

И это сама схема заявки:

const Transaction = require ("./transaction");
User              = require ("./user");
Ticket            = require ("./ticket");
Job               = require ("./job");
Client            = require ("./client");

// =======================Ticket Schema

var ticketSchema = new mongoose.Schema({
    ticket_name: String,
    description: String,
    created_by: [{type: mongoose.Schema.Types.ObjectID, ref: "User"}],
    assigned_user: [{type: mongoose.Schema.Types.ObjectID, ref: "User"}],
    completed_by_user: [{type: mongoose.Schema.Types.ObjectID, ref: "User"}],
    due_date: {type: Date},
    completed_date: {type: Date},
    completed_description: String,
    date_added: {type: Date, default: Date.now}
});

module.exports = mongoose.model("Ticket", ticketSchema);

Я не получаю эту ошибку для" created_by " или для «assign_user», но я получаю его для «completed_by_user». Я не понимаю, почему это может быть, поскольку все они заполнены одной схемой. Это не единственный случай, когда у меня возникают проблемы такого типа, но я уверен, что это происходит по той же причине. Я даже попытался изменить порядок, в котором мне нужны схемы, и это тоже не помогло. Есть ли что-то очевидное, что мне не хватает? Спасибо.

1 Ответ

0 голосов
/ 28 мая 2020
.populate(["created_by", "assigned_user", "completed_by_user"])

Попробуйте это, потому что функция .populate принимает только один аргумент, помещая его в массив, он принимает несколько

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