【问题标题】:How to connect my socket.io to my existing mongodb connection using mongoose如何使用 mongoose 将我的 socket.io 连接到我现有的 mongodb 连接
【发布时间】:2021-11-18 11:06:06
【问题描述】:

我在如何将我的 socket.io 连接到我现有的 mongodb 连接时遇到了这个问题?目前我正在创建一个任务管理应用程序。我打算在我的应用程序中添加聊天功能。但是我在如何将它连接到我现有的 mongodb 连接时遇到了这个问题。

server.js
import express from 'express';
import cors from 'cors';
import http from 'http';
import { Server } from 'socket.io';

import path from 'path';

import connect from './dbconnect.js';

import accountRoutes from './routes/accountRoutes.js';

const app = express();

app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

app.use('/api/user', accountRoutes);

const __dirname = path.resolve('..');

app.use('/public/uploads', express.static(__dirname + '/public/uploads/'));

const chatServer = http.createServer(app);

const PORT = process.env.PORT || 5000;

const socket = new Server(chatServer);

socket.on('connection', (socket) => {
  console.log('a user connected');
});

**Connection from my existing mongodb database**
connect
  .then(() => {
    app.listen(PORT, () =>
      console.log(`Server Running on Port: http://localhost:${PORT}`)
    );
  })
  .catch((error) => console.log(`${error} did not connect`));


dbconnect.js
import mongoose from 'mongoose';
import dotenv from 'dotenv';

dotenv.config();

const connect = mongoose.connect(process.env.CONNECTION_URL, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  useCreateIndex: true,
});

export default connect;

【问题讨论】:

    标签: node.js mongodb socket.io


    【解决方案1】:

    这就是我设置数据库连接的方式,

    db.connect.js

     import mongoose = require('mongoose');
    
        const options ={
        user:`${config.mngusername}`, 
        pass:`${config.mngpassword}`,
        keepAlive: true, 
        keepAliveInitialDelay: 300000,
        useNewUrlParser: true,
        useCreateIndex: true,
        useUnifiedTopology: true
       }
    
    const MONGO_URI = `mongodb://${config.mongourl}:${config.mongoport}/${config.mongocollection}?authSource=admin`;
    
    try {
       mongoose.set('useFindAndModify', false);
       mongoose.connect(MONGO_URI, options);
       mongoose.connection.on('connected', ()=>{  
         console.log({status:true,msg:'Mongoose default connection open to ' + MONGO_URI},'service');
       });
    
       // If the connection throws an error
        mongoose.connection.on('error', (err)=>{  
          console.log({status:false,msg:'handle mongo errored connections: ' + err},'service');
        });
    
      // When the connection is disconnected
       mongoose.connection.on('disconnected', ()=>{  
         console.log({status:false,msg:'Mongoose default connection disconnected'},'service'); 
        });
    
       process.on('SIGINT', ()=>{
          mongoose.connection.close(()=>{
           console.log({status:false,msg:'App terminated, closing mongo connections'},'service');
           process.exit(0);
        });
       });
    } catch (error) {
      console.log({status:false,msg:error},'service');
    }
    

    那么您只需在主脚本中导入数据库脚本:

    require('locationofdbscript');
    

    并正常启动您的套接字 io 服务器,而无需依赖数据库连接。 DB 脚本会记录连接是否成功,并且还会自动重试失败的连接。

    希望对你有用。

    【讨论】:

      猜你喜欢
      • 2019-04-28
      • 2017-09-09
      • 1970-01-01
      • 2018-07-19
      • 2011-10-03
      • 2022-08-08
      • 1970-01-01
      • 2016-07-17
      • 1970-01-01
      相关资源
      最近更新 更多