来自 MongoDB 的错误消息“操作 `disneys.insertOne()

我目前正在使用 MongoDB 和 Express 创建一个新的 API,目前遇到以下问题:

“操作 disneys.insertOne() 缓冲在 10000 毫秒后超时。”

我目前正在使用它route.rest来测试我的 API。

但是,我不知道我目前做错了什么,有人可以看一下我的Github 存储库吗?

这是我设置 API 调用的方式:

const express = require("express");

const router = express.Router();

const Disney = require("../models/disneyCharacter");


// Getting all character


router.get("/", async (req, res) => {

  try {

    const character = await Disney.find();

    res.json(character);

  } catch (err) {

    res.status(500).json({ message: err.message });

  }

});

// Getting one Character

router.get("/:id", getCharacter, (req, res) => {

  res.json(res.character);

});


// Creating new Character

router.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 character

router.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 character

router.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;


青春有我
浏览 165回答 6
6回答

浮云间

你的API调用似乎有问题,应该是disneyCharacters而不是disneyCharacter.另外,可能首先设置本地数据库而不是使用process.env.DATABASE_URL.

白衣染霜花

实际上我也遇到了同样的错误。我为解决此错误而执行的步骤是在 mongodb 中创建数据库时允许从任何地方访问(ip 配置)选择最近的服务器这解决了我的问题:)

墨色风雨

我遇到了同样的错误。我使用的是 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"); })

HUWWW

在我的应用程序中抛出了相同的错误消息。不同之处在于,我使用的是 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 前端给出: -> 数据存储 -> 集群 -> 连接 -> 连接你的应用程序在那里您可以找到一些代码片段。

湖上湖

删除这两个: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')})

红糖糍粑

在我的代码中,仅删除了参数 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);}    );
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript