我想使用带有单个mongoose.connect((.的模型
我在MongoDB中有一个简单的数据库,比如这个
ProjectDB
|_ tableA
|_ tableB
我在NodeJs 中有一个简单的服务器
ProjectFolder
|-> server.js
|-> /db
|-> mongooseDb.js
|-> /models
|-> tableA.js
|-> tableB.js
mongoseDb.js连接数据库并创建单个实例
const mongoose = require('mongoose');
function Connect(){
return new Promise((resolve,reject)=>{
mongoose.connect(connectionString, {useNewUrlParser: true, useUnifiedTopology: true})
.then((res)=>{
global.mongoose=mongoose;
resolve("Connection Successfull");
})
.catch((e)=>{reject(e);})
})
}
module.exports={
Connect
}
server.js创建服务器并侦听端口
var express = require("express");
var db=require("./db/mongooseDb");
var tableA=require("./db/models/tableA");
const app = express();
db.Connect()
.then((res)=>{
app.listen(port, () => console.log("Server Ready On port " + port));
tableA.Save({ name: 'John' });
})
.catch((err)=>{})
tableA.jstableA的模型
class tableA{
constructor(){
this.tableModel=global.mongoose.model('tableA', { name: String });
}
Save(data){
this.tableModel.create(data)
.then((res)=>{console.log(res)})
.catch((err)=>{console.log(err)})
}
}
const _tableA = new tableA();
module.exports={
_tableA
}
当我运行代码时,我会得到一个错误。
this.tableModel=global.mongoose.model('tableA',{name:String}(
TypeError:无法读取未定义的属性"model">
- 是否必须为每个模型创建一个单独的连接对象
- 我可以为多个模型共享同一个连接对象吗?(表A、表B(
- 若模型共享相同的连接对象,是否会导致它们的使用出现问题
经过调试和更多的研究,我注意到require("mongoose"(返回相同的对象实例。所以我这样修改代码。
tableA.js
const mongoose = require('mongoose');
class tableA{
constructor(){
this.tableModel=mongoose.model('tableA', { name: String });
}
Save(data){
this.tableModel.create(data)
.then((res)=>{console.log(res)})
.catch((err)=>{console.log(err)})
}
}
const _tableA = new tableA();
module.exports={
_tableA
}