gpt4 book ai didi

javascript - 无法修复 Mongoose 覆盖模型错误

转载 作者:可可西里 更新时间:2023-11-01 09:30:56 31 4
gpt4 key购买 nike

我正在使用 angular-fullstack 生成器并且添加了一个模型人员。当我尝试在 seed.js 文件中请求 person 模型时,出现此错误。

    /Users/dev/wishlist/node_modules/mongoose/lib/index.js:334
throw new mongoose.Error.OverwriteModelError(name);
^
OverwriteModelError: Cannot overwrite `Person` model once compiled.
at Mongoose.model (/Users/dev/wishlist/node_modules/mongoose/lib/index.js:334:13)
at Object.<anonymous> (/Users/dev/wishlist/server/api/wishList/person.model.js:11:27)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/Users/dev/wishlist/server/api/wishList/wishList.controller.js:4:14)
at Module._compile (module.js:456:26)

我遵循了用于生成器附带的“Thing”模型的相同结构。还进行了搜索,Person 在代码库中的位置以及它仅在 person.model.js 和 Controller 中的位置。

person.model.js:

'use strict';

var mongoose = require('mongoose'),
Schema = mongoose.Schema;

var PersonSchema = new Schema({
name: String,
quote: String
});

module.exports = mongoose.model('Person', PersonSchema);

wishlist.controller.js:

'use strict';

var _ = require('lodash');
var Person = require('./person.model');

// Get all the People that have wish lists
exports.getPeople = function(req, res) {
Person.find(function (err, people) {
if(err) { return handleError(res, err); }
return res.json(200, people);
});
};

function handleError(res, err) {
return res.send(500, err);
}

我错过了什么?

最佳答案

根据您发布的信息,我了解到问题似乎是由以下几行引起的:

在对象。 (/Users/dev/wishlist/server/api/wishList/person.model.js:11:27)

module.exports = mongoose.model('Person', PersonSchema);

在对象。 (/Users/dev/wishlist/server/api/wishList/wishList.controller.js:4:14)

var Person = require('./person.model');

此错误最常见于 Mongoose 模型之间的不匹配。

在路上的某个地方,您已经用不同的名称定义了这个模型,但使用了相同的模式。

为了查看这是否是导致错误的原因,请在您需要 mongoose 之后立即在 person.model.js 中添加此代码:

'use strict';

var mongoose = require('mongoose'),
Schema = mongoose.Schema;

mongoose.models = {};
mongoose.modelSchemas = {};

这将清除您的 Mongoose 数据并清空所有现有模型和模式。

我在以下LINK找到了上述信息.

我还发现了一些解决此问题的其他讨论 HEREHERE .

关于javascript - 无法修复 Mongoose 覆盖模型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27464631/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com