我正在创建一个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);
}
});
});
最佳答案
连接Atlas MongoDB集群后,就可以将其与其他任何MongoDB连接一样对待。请参阅我关于如何正确连接到Atlas群集的答案:https://stackoverflow.com/a/61480485/8322220。
但是,您在查询数据时似乎也遇到了问题,但是如果没有相关代码,很难提供帮助。
但是,在您的第三个代码段中,您正在查询User
-但我认为您的User
模式不正确。
我建议您将Todos
分成其自己的模式,然后分别导出到用户,即:module.exports = mongoose.model('Todo', todoSchema)
关于javascript - 无法连接到mongoDB Atlas Cluster中的特定数据库和集合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61530245/