编译后无法覆盖“历史”模型

时间:2019-01-05 01:42:17

标签: javascript node.js mongodb mongoose mongoose-schema

我正在尝试保存查询,但是它给我的错误是编译后无法覆盖模型。我的模型文件是

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(内部/模块/cjs/loader.js:688:30)     在Object.Module._extensions..js(内部/模块/cjs/loader.js:699:10)     在Module.load(internal / modules / cjs / loader.js:598:32)     在tryModuleLoad(内部/模块/cjs/loader.js:537:12)     在Function.Module._load(internal / modules / cjs / loader.js:529:3)     在Module.require(内部/模块/cjs/loader.js:636:17)     在要求时(内部/模块/cjs/helpers.js:20:18)     在对象。 (F:\图像抽象层\ routes \ routes.js:3:15)     在Module._compile(内部/模块/cjs/loader.js:688:30)     在Object.Module._extensions..js(内部/模块/cjs/loader.js:699:10)     在Module.load(internal / modules / cjs / loader.js:598:32)     在tryModuleLoad(内部/模块/cjs/loader.js:537:12)     在Function.Module._load(internal / modules / cjs / loader.js:529:3) [nodemon]应用程序崩溃-等待文件更改,然后再开始...

2 个答案:

答案 0 :(得分:1)

也许您可以通过更改它来解决

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

为此

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

答案 1 :(得分:0)

您必须在许多地方创建相同的架构,并使用相同的模型名称对其进行编译 这不是正确的方法。

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

您可以使用您在代码中所做的方式来要求它。但请确保在编译后导出模型。 这里发生的是,您不导出已编译的模型..您只需在进行每次请求时就将其编译即可。这就是错误发生的原因。