gpt4 book ai didi

node.js - express + MongoDB

转载 作者:可可西里 更新时间:2023-11-01 10:00:12 24 4
gpt4 key购买 nike

我尝试使用 express 将应用程序连接到 mongoDB,目前我对集合用户没有问题,它工作得很好,但它不适用于我的第二个集合,当我尝试获取我的第二个集合的所有数据时collection, express 返回一个空数组。

// Import dependencies
const mongoose = require('mongoose');
const express = require('express');
const router = express.Router();

// MongoDB URL from the docker-compose file
const dbHost = 'mongodb://database/mybase';

// Connect to data
mongoose.connect(dbHost);

// create mongoose schema
const userSchema = new mongoose.Schema({
mail: String,
mdp: String,
firstname: String,
participants: Number
});

// create mongoose schema
const roomSchema = new mongoose.Schema({
roomId: String,
});

// create mongoose model
const User = mongoose.model('User', userSchema);
const Room = mongoose.model('Room', roomSchema);

/* GET api listing. */
router.get('/', function(req, res) {
res.send('api works');
});

/* GET all users. */
router.get('/users', function(req, res) {
User.find({}, function (err, users) {
if (err) {
res.status(500).send(error)
}
res.status(200).json(users);
});
});

/* GET all rooms. */
router.get('/room', function(req, res) {
Room.find({}, function (err, room) {
if (err) {
res.status(500).send(error)
}
res.status(200).json(room);
});
});

module.exports = router;

在我的 mongo 中,数据是这样存储的:

> db.users.find()
{ "_id" : ObjectId("5903a7ee0e999a5054cc402b"), "mail" : "mail@google.com", "mdp" : "toto", "firstname" : "firstname", "participants" : 100 }
{ "_id" : ObjectId("5903ae7952163fd952970ed5"), "mail" : "mail2@google.com", "mdp" : "toto", "firstname" : "firstname", "participants" : 50 }

> db.room.find()
{ "_id" : ObjectId("59043f280d062a4959b69315"), "roomId" : "6733454" }

我搜索了很长时间但老实说,我不知道为什么它不起作用,我也尝试将用户数据放入房间数据并将用户模式复制/粘贴到房间模式中,但它没有'也工作。

如果我将 User 模型对象放在 router.get room 中,它会起作用,我会得到用户数据,所以对我来说这不是路由问题。

最佳答案

默认情况下,Mongoose 将函数 ( utils.toCollectionName() ) 应用于模型名称以确定 Mongoose 将用于该模型的集合名称。对于名为 Room 的模型,该集合名称将为 rooms

但是,您的集合名为 room(单数),因此存在不匹配。

要解决此问题,您可以使用 collection 显式指定应使用哪个集合架构选项:

const roomSchema = new mongoose.Schema({
roomId: String,
}, {
collection : 'room'
});

关于node.js - express + MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43693210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com