Node.js 一旦编译,就无法覆盖模型
我想使用mongoose在mongodb中插入记录,但我得到错误“一旦编译就无法覆盖”故事“模型”Node.js 一旦编译,就无法覆盖模型,node.js,mongodb,express,mongoose,mongoose-populate,Node.js,Mongodb,Express,Mongoose,Mongoose Populate,我想使用mongoose在mongodb中插入记录,但我得到错误“一旦编译就无法覆盖”故事“模型” 您正在初始化mongoose,每次有人点击/getdatapost endpoint时,所有架构都将被初始化,并且express app主进程将不会被终止,直到您手动或发生任何未处理的错误 因此,目前在您的计划中,这是一个场景: 第一次请求/getdata 您的mongoose将被初始化,Story和Person模型将注册到mongoose对象,这是全局的,因此您可以在任何地方使用它,这也是唯一
您正在初始化mongoose,每次有人点击
/getdata
post endpoint时,所有架构都将被初始化,并且express app主进程将不会被终止,直到您手动或发生任何未处理的错误
因此,目前在您的计划中,这是一个场景:
第一次请求/getdata
- 您的mongoose将被初始化,
和Story
模型将注册到mongoose对象,这是全局的,因此您可以在任何地方使用它,这也是唯一的(您的错误在这里)Person
- 您已经向
DB,因为它需要唯一的模型,所以会抛出错误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");
})
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");
})