【问题标题】:OverwriteModelError: Cannot overwrite `teams` model once compiledOverwriteModelError:编译后无法覆盖“团队”模型
【发布时间】:2019-02-28 20:06:24
【问题描述】:

几个小时后。 StackOverflow 的研究。有很多关于这个问题的文章。但我无法弄清楚我在这里做错了什么。

我的代码:

模型/Team.js

const mongoose = require('mongoose');

const { Schema } = mongoose;

const teamSchema = new Schema({
  name: { type: String, minLength: 1, required: true },
  description: { type: String },
});

mongoose.model('teams', teamSchema);

models/Division.js

const mongoose = require('mongoose');

const { Schema } = mongoose;

const divisionSchema = new Schema({
  name: { type: String, minLength: 1, required: true },
  description: { type: String },
});

mongoose.model('teams', divisionSchema);

而且我在 index.js 中是必需的

const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const keys = require('./config/keys');

require('./models/Team');
require('./models/Division');

mongoose.Promise = global.Promise;
mongoose.connect(keys.mongoURI, { useNewUrlParser: true });

const app = express();
app.use(bodyParser.json());

require('./routes/teamRoutes')(app);

const port = process.env.PORT || 5000;
app.listen(port);

路线/teamRoutes.js

const mongoose = require('mongoose');

const Team = mongoose.model('teams');

module.exports = (app) => {
  app.get('/api/teams', async (req, res) => {
    const teamsList = await Team.find({});
    res.send(teamsList);
  });
};

如果我删除require('./models/Division');,它会起作用。这是为什么? 如果没有,我得到了错误:

throw new mongoose.Error.OverwriteModelError(name);
  ^
OverwriteModelError: Cannot overwrite `teams` model once compiled.

【问题讨论】:

    标签: javascript node.js mongodb mongoose


    【解决方案1】:
    mongoose.model('teams', divisionSchema);
    

    'teams' 应该是 models/Division.js 中的'division' 我猜

    【讨论】:

    • 谢谢你,马夏尔。
    猜你喜欢
    • 2015-04-25
    • 2017-10-04
    • 2022-08-21
    • 2020-03-06
    • 2020-11-13
    • 2021-05-18
    • 2019-08-31
    • 2019-01-13
    • 2013-10-03
    相关资源
    最近更新 更多