如何通过使用 Mongoose 将两个或多个集合与 Node.js 应用程序链接来进行 CRUD

问题描述 投票:0回答:1

我是初学者,想使用nodejs和mongoDB(mongoose)练习CRUD。 只有一个集合(员工)连接到现有代码,我们想添加另一个集合(例如传感器)。

参考文字

使用

我的项目文件夹

Node.js-Expess-MongoDB-CRUD-master
├─ project
│  ├─ controllers
│  │  ├─ employeeController.js
│  │  └─ sensorController.js
│  ├─ models
│  │  ├─ db.js
│  │  ├─ employee.model.js
│  │  └─ sensor.model.js
│  ├─ package-lock.json
│  ├─ package.json
│  ├─ server.js
│  └─ views
│     ├─ employee
│     │  ├─ addOrEdit.hbs
│     │  └─ list.hbs
│     ├─ layouts
│     │  └─ mainLayout.hbs
│     └─ sensor
│        ├─ addOrEdit.hbs
│        └─ list.hbs
└─ README.md

我添加了controllers/sensorController.js、models/sensor.model.js、views/sensor 并修改了db.js

现有db.js文件的代码如下:

const mongoose = require('mongoose');

mongoose.connect('mongodb://127.0.0.1:27017/EmployeeDB', { useNewUrlParser: true, useUnifiedTopology: true}, (err) => {
if (!err) { console.log('MongoDB Connection Succeeded.') }
    else { console.log('Error in DB connection : ' + err) }
});


require('./employee.model');

更改如下:

const mongoose = require('mongoose');

const conn = mongoose.createConnection('mongodb://127.0.0.1:27017/EmployeeDB'   , { useNewUrlParser: true, useUnifiedTopology: true}, (err) => {
if (!err) { console.log('MongoDB Connection Succeeded.') }
    else { console.log('Error in DB connection : ' + err) }
}        );
const EmployeeModel = conn.model('EmployeeModel', require('./employee.model'));
require('./employee.model');

const conn2 = mongoose.createConnection('mongodb://127.0.0.1:27017/SensorDB'   ,  { useNewUrlParser: true, useUnifiedTopology: true}, (err) => {
if (!err) { console.log('MongoDB Connection Succeeded.') }
    else { console.log('Error in DB connection : ' + err) }
}  );
const SensorModel =conn2.model('SensorModel', require('./sensor.model'));

module.exports = {conn, EmployeeModel, conn2,SensorModel};

发生错误如下。

$ node server.js
Express server started at port : 3000
MongoDB Connection Succeeded.
MongoDB Connection Succeeded.
Error in retrieving employee list :MongooseError: Operation `employees.find()` buffering timed out after 10000ms
Error during record insertion : MongooseError: Operation `employees.insertOne()` buffering timed out after 10000ms
Error in retrieving sensor list :MongooseError: Operation `sensors.find()` buffering timed out after 10000ms
Error during record insertion : MongooseError: Operation `sensors.insertOne()` buffering timed out after 10000ms
Error during record insertion : MongooseError: Operation `sensors.insertOne()` buffering timed out after 10000ms
Error during record insertion : MongooseError: Operation `sensors.insertOne()` buffering timed out after 10000ms
Error in retrieving sensor list :MongooseError: Operation `sensors.find()` buffering timed out after 10000ms

如果您能回答我的问题,我将不胜感激

node.js express mongoose
1个回答
0
投票

据我了解,您对集合和数据库存在概念混乱。

数据库由一个或多个集合组成。集合包括 一份或多份文件。

也许这个可以帮助你理解MongoDB的核心概念。

问题是您想要添加一个新集合,但您的代码添加了一个新数据库。

如果您想添加新的集合,只需添加模型即可。通过这个模型,Mongoose 将在创建新文档时立即创建一个集合。但是,如果您愿意,您可以使用

createCollection
方法手动触发它。

© www.soinside.com 2019 - 2024. All rights reserved.