Невозможно перезаписать модель `history` после компиляции - PullRequest
0 голосов
/ 05 января 2019

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

const mongoose = require("mongoose")

const history = new mongoose.Schema({
    search_name: {
        type: String,
        required: true,

    },
    date: {
        type: Date,
        required: true
    }
})

module.exports = mongoose.model("history", history)

и мой файл маршрутов:

const keys = require("../config/keys")
const Bing = require('node-bing-api')({ accKey: "0112a649fd944630b0954a20ac8c71f6" });
let History = require("../Models/searchhistory")
module.exports = (app) => {

    app.get("/api/imagesearch/:searchname", (req, response) => {

        const query = req.params.searchname
        const per_page = parseInt(req.query.offset, 10)
        Bing.images(query, {
            count: 100,
            offset: 0
        }, (error, res, body) => {
            const hist = new History({

                })
                // hist.save().then(() => {

            // })
            response.send(body)
        })
    })
}

Я получаю эти ошибки при запуске кода:

F:\image abstraction layer\node_modules\mongoose\lib\index.js:453
  throw new _mongoose.Error.OverwriteModelError(name);
  ^

OverwriteModelError: Невозможно перезаписать history модель после компиляции. в новом OverwriteModelError (F: \ слой абстракции изображений \ node_modules \ mongoose \ lib \ error \ overwriteModel.js: 20: 11) в Mongoose.model (F: \ слой абстракции изображений \ node_modules \ mongoose \ lib \ index.js: 453: 13) на объекте. (F: \ слой абстракции изображения \ Models \ searchhistory.js: 15: 27) в Module._compile (внутренний / modules / cjs / loader.js: 688: 30) в Object.Module._extensions..js (внутренняя / modules / cjs / loader.js: 699: 10) в Module.load (внутренний / modules / cjs / loader.js: 598: 32) в tryModuleLoad (внутренняя / modules / cjs / loader.js: 537: 12) в Function.Module._load (внутренний / modules / cjs / loader.js: 529: 3) в Module.require (внутренняя / modules / cjs / loader.js: 636: 17) по требованию (внутренний / modules / cjs / helpers.js: 20: 18) на объекте. (F: \ слой абстракции изображения \ways \ rout.js: 3: 15) в Module._compile (внутренний / modules / cjs / loader.js: 688: 30) в Object.Module._extensions..js (внутренняя / modules / cjs / loader.js: 699: 10) в Module.load (внутренний / modules / cjs / loader.js: 598: 32) в tryModuleLoad (внутренняя / modules / cjs / loader.js: 537: 12) в Function.Module._load (внутренний / modules / cjs / loader.js: 529: 3) Приложение [nodemon] упало - ожидание изменений файла перед запуском ...

1 Ответ

0 голосов
/ 07 января 2019

Вы должны создавать одну и ту же схему во многих местах и ​​выполнять их, используя одно и то же название модели. это не правильный способ сделать это.

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const history = new Schema({
    search_name: {
        type: String,
        required: true,

    },
    date: {
        type: Date,
        required: true
    }
})

const History = module.exports = mongoose.model("history", history) // use this History  const to access your history schema every where in your application

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

...