Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 一旦编译,就无法覆盖模型_Node.js_Mongodb_Express_Mongoose_Mongoose Populate - Fatal编程技术网

Node.js 一旦编译,就无法覆盖模型

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在mongodb中插入记录,但我得到错误“一旦编译就无法覆盖”故事“模型”


您正在初始化mongoose,每次有人点击
/getdata
post endpoint时,所有架构都将被初始化,并且express app主进程将不会被终止,直到您手动或发生任何未处理的错误

因此,目前在您的计划中,这是一个场景:

第一次请求/getdata

  • 您的mongoose将被初始化,
    Story
    Person
    模型将注册到mongoose对象,这是全局的,因此您可以在任何地方使用它,这也是唯一的(您的错误在这里)
从第二次请求到/getdata

  • 您已经向
    mongodb://localhost:27017/mydb
    DB,因为它需要唯一的模型,所以会抛出错误
解决方案

  • 将初始化代码放在只调用一次的其他地方。你可以考虑这样的结构:
或者,如果您想在同一个文件中执行此操作(由于明显的原因,不建议这样做),请执行以下操作

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");
})