我想使用猫鼬在mongodb中插入记录,但出现错误“编译后无法覆盖“故事”模型”
app.post('/getdata', (req, res, next) => {
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/mydb');
var Schema = mongoose.Schema;
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var personSchema = Schema({
_id: Schema.Types.ObjectId,
name: String,
age: Number,
stories: [{ type: Schema.Types.ObjectId, ref: 'Story' }]
});
var storySchema = Schema({
author: { type: Schema.Types.ObjectId, ref: 'Person' },
title: String,
fans: [{ type: Schema.Types.ObjectId, ref: 'Person' }]
});
var Story = mongoose.model('Story', storySchema);
var Person = mongoose.model('Person', personSchema);
res.send("Om Success");
})
答案 0 :(得分:0)
您正在初始化猫鼬,并且每当有人点击/getdata
后端点时,所有架构都将被初始化,并且正如您所表示的那样,直到您手动或任何未处理的错误发生时,应用程序的主要过程才会终止。
因此,当前在您的程序中是这种情况:
首次请求/ getdata
Story
和Person
模型已向猫鼬对象注册,并且这是全局的,因此您可以在任何地方使用它,并且这也是唯一的(您的错误在这里)。 / li>
从第二个请求到/ getdata
Story
DB注册了Person
和mongodb://localhost:27017/mydb
模型,因为它需要唯一的模型,将引发错误。解决方案
或者如果您想在同一文件中执行此操作(出于明显原因不建议这样做)
var express = require('express');
var mongoose = require('mongoose');
var app = express();
var Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost:27017/mydb');
var personSchema = Schema({
_id: Schema.Types.ObjectId,
name: String,
age: Number,
stories: [{ type: Schema.Types.ObjectId, ref: 'Story' }]
});
var storySchema = Schema({
author: { type: Schema.Types.ObjectId, ref: 'Person' },
title: String,
fans: [{ type: Schema.Types.ObjectId, ref: 'Person' }]
});
var Story = mongoose.model('Story', storySchema);
var Person = mongoose.model('Person', personSchema);
app.post('/getdata', (req, res, next) =>
{
res.send("Om Success");
})