MongoDB, использующий api NodeJS, возвращает значение Null почему?

#node.js #mongodb #api

#node.js #mongodb #API

Вопрос:

Я знаю, что об этом много сообщений, но ни у кого нет моей проблемы, мои таблицы существуют, путь в какой-то степени работает, но два запроса просто возвращают значение null, и я понятия не имею, почему. Вот просьба, которая не работает :

 // *Get Chat Message* router.get("/message/:MessageId",async(req, res)=gt;{ try{  const message = await Message.findById(req.params.MessageId);  res.status(200).json(message)  } catch (err){  res.status(500).json(err)  } }) // *Get All Chat Message* router.get("/message/findAll",async(req, res)=gt;{ try {  const messages = await Message.find();  res.status(200).json(messages) } catch (err) {  res.status(500).json(err); }  

})

Если нужно, вот остальная часть файла, где ВСЕ запросы работают ИДЕАЛЬНО, поэтому я не знаю, почему не работают только эти два.

 const router = require("express").Router(); const Post = require("../models/Post"); const User = require("../models/User"); const Chat = require("../models/Chat"); const Message = require("../models/ChatMessage");  // * Get a Chat * router.get("/:firstUserId/:secondUserId", async(req, res) =gt; {  const chat = await Chat.findOne({ users: { $all: [req.params.firstUserId, req.params.secondUserId] } });  res.status(200).json(chat); })  // * Get every Chat of one user * router.get("/:userId", async(req, res) =gt; { try{  const chats = await Chat.find({ users: { $all: [req.params.userId]} });  res.status(200).json(chats); }catch(err){  res.status(500).json(err); } })  // *Create Chat* router.post("/",async(req, res)=gt;{ const chat = new Chat(req.body) try {  const savedChat = await chat.save();  res.status(200).json(savedChat); }catch(err){  res.status(500).json(err) } })  // *Delete Chat* router.delete("/:firstUserId/:secondUserId",async(req, res)=gt;{ const chat = await Chat.findOne({ users: { $all: [req.params.firstUserId, req.params.secondUserId] } }); try{  chat.deleteOne();  res.status(200).json("The chat has been delete successfully.")  } catch (err){  res.status(500).json(err)  } }) // *Put Chat Message* router.put("/message",async(req, res)=gt;{ const newMessage = new Message(req.body) try {  const savedMessage = await newMessage.save();  res.status(200).json(savedMessage) } catch (err) {  res.status(500).json(err) } })  

Имя схемы и параметр базы данных совпадают, поэтому я не знаю, почему это не работает. Он по-прежнему возвращает значение null, даже если я удалю два, которые не работают, он возвращает ошибку только в том случае, если я удалю весь файл.

Вот моя схема:

 const mongoose = require("mongoose");  const ChatMessageSchema = new mongoose.Schema({ conversationId: {  type: String,  required: true }, userId: {  type: String,  required: true }, content: {  type: String,  required: true,  max: 5000 }, state: {  type: Number,  default: 0  } }, { timestamps: true } );  module.exports = mongoose.model("chat_message", ChatMessageSchema,"chat_messages");  

Стол Таблица MongoDB Запрос сделан почтальоном Запросы почтальона

Комментарии:

1. если вы что-то утешите внутри этих двух маршрутизаторов. могут ли журналы консоли регистрироваться?

2. Если это произойдет, то возникнут две проблемы. 1. Ваш запрос находится в процессе, и res возвращается до запроса mongo (консоль возвращенного экземпляра базы данных mongo). 2. В вашей базе данных нет документа. (вы можете увидеть, какой идентификатор вы передали в парах в mongo db compass или другом инструменте gui или с помощью команд CLI.)

3. @AliFaiz он существует в mongo я провел свое исследование, скопировав идентификатор непосредственно из mongo, и с консоли ничего не печатается, только сообщение о том, что я вызвал api (которое я также получил с другого рабочего маршрута), поэтому я не понимаю, почему он не работает.

Ответ №1:

чтобы получить все документы, используйте

 Model.find({});  

и для одиночной попытки выполните следующие действия

 Model.findOne({_id: lt;idgt;})  

Комментарии:

1. Я все еще получаю ошибку , кстати, извините, но она была не «неопределенной», а нулевой, скажите мне, нужен ли вам постмальный результат таблиц mongodb с экраном

2. да, конечно, ты можешь поделиться.

3. готово я добавил их в конце.

Ответ №2:

Наконец-то найдена ошибка.

Проблема в том, что для экспресса /message и /message/:MessageId были на одном пути.

/findAll все еще не работает, но мне это не нужно.