javascript 无法连接到mongoDB Atlas集群内的特定数据库和集合

chhqkbe1  于 2023-02-15  发布在  Java
关注(0)|答案(2)|浏览(119)

我正在创建一个MERN堆栈应用程序,并选择使用mongoose与MongoDB Atlas通信。但MongoDB Atlas使用的是带有数据库的集群,其中也有集合。我找不到任何文档说明如何连接到特定的数据库和集合。
这是我目前的代码:
包含架构的文件

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const userSchema = new Schema({
  User: {
    fisrtname: String,
    lastname: String,
    email: String,
    password: String,
  },
  Todos: [
    {
      title: String,
      completed: Boolean,
      id: Schema.Types.ObjectId,
    },
  ],
});

module.exports = mongoose.model('User', userSchema, 'todosCollection');

主服务器文件

const express = require('express');
const path = require('path');
const mongoose = require('mongoose');
const dbConfig = require('./database/db');
const app = express();
const PORT = process.env.PORT || 8080;

// Connecting to MongoDB database
mongoose.Promise = global.Promise;
mongoose
  .connect(dbConfig.db, {
    useNewUrlParser: true,
  })
  .then(
    () => console.log('Database Sucsessfully connected!'),
    err => console.error('Could not connect to database: ' + err)
  );

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

app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'public', 'index.html'));
});

app.use('/api/todos', require('./routes/api/todos'));

app.listen(PORT, () => console.log(`Server is running on port ${PORT}`));

还有搜索MongoDB的函数!这是另一个文件的一个片段,但其余的对这个问题来说并不重要。

const userSchema = require('../../database/models/User');

router.get('/', (req, res) => {
  userSchema.find((err, data) => {
    if (err) {
      res.staus(500).json({ msg: 'Did not found database data' });
    } else {
      res.json(data);
    }
  });
});
chhkpiq4

chhkpiq41#

一旦你连接了你的Atlas MongoDB集群-你可以把它和其他MongoDB连接一样对待。请看我关于如何正确连接到Atlas集群的回答:https://stackoverflow.com/a/61480485/8322220.
但是,您似乎也遇到了查询数据的问题,但是如果没有相关代码,这将很难提供帮助。

  • 但是,在第三个代码段中,您查询的是User-但我认为您的User模式不正确。
  • 我建议您将Todos分离到它自己的模式中,并单独导出到用户,即:

module.exports = mongoose.model('Todo', todoSchema)

f4t66c6m

f4t66c6m2#

通过将dbname作为选项参数传递,您可以指定数据库,请查看链接以了解清楚。
https://mongoosejs.com/docs/connections.html#options

相关问题