簡體   English   中英

Mongoose 和 socket.io 兩個連接

[英]Mongoose and socket.io two connections

我正在使用socket.io-adapter-mongo使在我的應用程序中創建平衡加載程序成為可能。 除此之外,我想使用貓鼬來管理數據庫。 如果我使用這兩個包給出的api是

socket.io-適配器-mongo

var io = require('socket.io')(3000);
var mongo = require('socket.io-adapter-mongo');
io.adapter(mongo({ host: 'localhost', port: 27017, db: 'mubsub' }));

貓鼬

mongoose.connect('mongodb://user:pass@localhost:port/database');

所以如果我想同時使用它們,我必須連接到數據庫兩次嗎? 或者這是一種通過一個連接使用它們的方法?

謝謝

實際上,您似乎必須使用 2 個連接。

如果您檢查socket.io-adapter-mongo的代碼,似乎他們正在使用mubsub建立與 mongo 的連接,所以我認為沒有辦法只使用一個連接而不改變庫。

下面的代碼將工作


const mongoose = require('mongoose')
const { createAdapter } = require("@socket.io/mongo-adapter")

const collection = mongoose.connection.createCollection("chatCapped", {
        capped: true,
        size: 1e6
    })

/* io socket.io  Server instance */

collection
        .then(db => io.adapter(createAdapter(db)))
        .catch(error => {
            /* Collection already exists */
           if (error.code == 48) {
               io.adapter(createAdapter(mongoose.connection.collection("chatCapped")))
               return;
           } 
           console.log(error)
        })

貓鼬設置代碼


const MONGODB_URI = 'mongodb://localhost:27017/ChatApp?retryWrites=true'

const mongoose = require("mongoose");

mongoose.connect(MONGODB_URI, {
    useUnifiedTopology: true,
}, (error, _db) => {
    if (error) throw error
    console.log(`MongoDB  Connected!!`);
})

mongoose.Promise = global.Promise;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM