我正在尝试保存查询,但是它给我的错误是编译后无法覆盖模型。我的模型文件是
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]应用程序崩溃-等待文件更改,然后再开始...
答案 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
您可以使用您在代码中所做的方式来要求它。但请确保在编译后导出模型。 这里发生的是,您不导出已编译的模型..您只需在进行每次请求时就将其编译即可。这就是错误发生的原因。