在我正在处理的一个项目中,我连接到这样的数据库,它输出console.log部分
const express = require('express');
const app = express();
const socketio = require('socket.io');
const mongoose = require('mongoose');
const expressServer = app.listen(3001);
const io = socketio(expressServer);
const Game = require('./Models/Game')
mongoose.connect('mongodb://localhost:27017/test',
{useNewUrlParser: true, useUnifiedTopology: true},
()=>{console.log('successfully connected to database')});
后来,我用mongoose创建了一个模式模型,创建了这个模型的一个实例,当我试图将它保存在第13行时,代码在到达这一点时停止执行。
1 io.on('connect', (socket)=>{
2 socket.on('create-game',async (nickName)=>{
3 try{
4 const quotableData = await QuotableAPI();
5 let game = new Game();
6 game.words = quotableData;
7 let player = {
8 socketID : socket.id,
9 isPartyLeader : true,
10 nickName
11 }
12 game.players.push(player);
13 game = await game.save();
14 .......
所以我想知道是否是我没有连接到数据库。作为参考,我尝试了
console.log(mongoose.connection.readyState)
它输出了0,我在其他帖子中看到这意味着你没有连接。如果是这样的话,我们将如何解决这个问题。
您可以通过打印连接数据库中的所有集合来验证这一点。
const express = require('express');
const app = express();
const socketio = require('socket.io');
const mongoose = require('mongoose');
const expressServer = app.listen(3001);
const io = socketio(expressServer);
mongoose.connect('mongodb://localhost:27017/test');
mongoose.connection.on('open', function (ref) {
console.log('Connected to mongo server.');
mongoose.connection.db.listCollections().toArray(function (err, names) {
console.log(names);
});
})
您可以使用mongoose.connection.connect
进行检查。
const mongoClient = require('./config/default')
const mongoose = require('mongoose')
// MongoDB
mongoose.connect(
`mongodb+srv://${mongoClient.username}:${mongoClient.password}@${mongoClient.url}/${mongoClient.database}?retryWrites=true&w=majority`
)
// Test connection
mongoose.connection.once('open', function () {
console.log('MongoDB database connection established successfully')
})
您的本地mongodb服务器正在运行吗?
在终端中键入mongod
以启动它。
您也可以使用Mongo Compass进行检查。
这是一篇关于它的好文章。