亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

來自 MongoDB 的錯誤消息“操作 `disneys.insertOne()

來自 MongoDB 的錯誤消息“操作 `disneys.insertOne()

青春有我 2023-10-20 16:53:57
我目前正在使用 MongoDB 和 Express 創建一個新的 API,目前遇到以下問題:“操作 disneys.insertOne() 緩沖在 10000 毫秒后超時?!蔽夷壳罢谑褂盟黵oute.rest來測試我的 API。但是,我不知道我目前做錯了什么,有人可以看一下我的Github 存儲庫嗎?這是我設置 API 調用的方式:const express = require("express");const router = express.Router();const Disney = require("../models/disneyCharacter");// Getting all characterrouter.get("/", async (req, res) => {  try {    const character = await Disney.find();    res.json(character);  } catch (err) {    res.status(500).json({ message: err.message });  }});// Getting one Characterrouter.get("/:id", getCharacter, (req, res) => {  res.json(res.character);});// Creating new Characterrouter.post("/", async (req, res) => {  const character = new Disney({    name: req.body.name,    details: req.body.details,  });  try {    const newCharacter = await character.save();    res.status(201).json({ newCharacter });  } catch (err) {    res.status(400).json({ message: err.message });  }});// Updating one characterrouter.patch("/:id", getCharacter, async (req, res) => {  if (req.body.name != null) {    res.character.name = req.body.name;  }  if (req.body.details != null) {    res.character.details = req.body.details;  }  try {    const updateCharacter = await res.character.save();    res.json(updateCharacter);  } catch (err) {    res.status(400).json({ message: err.message });  }});// Deleting one characterrouter.delete("/:id", getCharacter, async (req, res) => {  try {    await res.character.remove();    res.json({ message: "Deleted character" });  } catch (err) {    res.status(500).json({ message: err.message });  }});async function getCharacter(req, res, next) {  let character;  try {    character = await character.findById(req.params.id);    if (character == null) {      return res.status(404).json({ message: "Cannot find character" });    }  } catch (err) {    return res.status(500).json({ message: err.message });  }  res.character = character;  next();}module.exports = router;
查看完整描述

6 回答

?
浮云間

TA貢獻1829條經驗 獲得超4個贊

你的API調用似乎有問題,應該是disneyCharacters而不是disneyCharacter.

另外,可能首先設置本地數據庫而不是使用process.env.DATABASE_URL.


查看完整回答
反對 回復 2023-10-20
?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

實際上我也遇到了同樣的錯誤。我為解決此錯誤而執行的步驟是

在 mongodb 中創建數據庫時

  1. 允許從任何地方訪問(ip 配置)

  2. 選擇最近的服務器

這解決了我的問題:)


查看完整回答
反對 回復 2023-10-20
?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

我遇到了同樣的錯誤。我使用的是 mongoDB Atlas 而不是本地的。對我有用的是刪除方法中的選項.connect(我使用 mongoose 連接到 mongodb)。


以前的代碼(導致錯誤的)


mongoose.connect(

  "" + process.env.DB_URL,

  { useUnifiedTopology: true, useNewUrlParser: true, useFindAndModify: false },

  () => { console.log("Connected to DB"); }

)

只需刪除該方法中 { } 內的代碼即可。


mongoose.connect(

  "" + process.env.DB_URL,

  { },

  () => { console.log("Connected to DB"); }

)


查看完整回答
反對 回復 2023-10-20
?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

在我的應用程序中拋出了相同的錯誤消息。不同之處在于,我使用的是 MongoDB Atlas,而不是本地 MongoDB。


解決方案:將“+srv”添加到 URL 方案后,問題消失了:


const mongoose = require("mongoose");

mongoose.set('useUnifiedTopology', true);

mongoose.set('useNewUrlParser', true);

mongoose.connect("mongodb+srv://user:password@host/dbname")

.then( () => console.log("connected to DB."))

.catch( err => console.log(err));

package.json 中的依賴項:


"dependencies": {

"mongoose": "^5.11.12",

}

MongoDB 版本 4.2.11


連接字符串在 MongoDB Atlas 前端給出: -> 數據存儲 -> 集群 -> 連接 -> 連接你的應用程序


在那里您可以找到一些代碼片段。


查看完整回答
反對 回復 2023-10-20
?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

刪除這兩個:


useCreateIndex: true,

useFindModify: false,

并把這個:


useNewUrlParser: true,

useUnifiedTopology: true

最后的例子:


mongoose.connect(process.env.MONGODB_URL, {

    useNewUrlParser: true,

    useUnifiedTopology: true

}, err => {

    if(err) throw err;

    console.log('Connected to mongodb')

})


查看完整回答
反對 回復 2023-10-20
?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

在我的代碼中,僅刪除了參數 ssl,我正在 digitalOcean 中使用數據庫,我的代碼是:


    mongoose.Promise=global.Promise; 

    mongoose.connect(process.env.MONGO_URI,{

        useNewUrlParser: true,

        useUnifiedTopology: true,

        ssl: true,

        // tlsCAFile: mongoCertPath, ----> you should remove this line

        socketTimeoutMS:43200000,

    }).then(

        ()=>{ console.log('conected to digitalOcean mongoDB: db_CRM'); },

        err=>{console.log('erro to connect digitalOcean mongoDB:'+err);}


    );


查看完整回答
反對 回復 2023-10-20
  • 6 回答
  • 0 關注
  • 217 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號