【问题标题】:Express and MongoDB problem with insertedCount插入计数的 Express 和 MongoDB 问题
【发布时间】:2021-07-27 15:42:17
【问题描述】:

我在 NodeJS 项目的 MongoDB 中使用“insertedCount”时遇到问题。在“insertOne()”之后,分配的 const 不允许我读取返回“未定义”的 insertCount 值。我附上我的 app.js 代码:

const { MongoClient } = require("mongodb");
const express = require("express");
const app = express();
const dbURI = "mongodb+srv://xxxx:xxxx@xxxx.xxxx.mongodb.net/xxxx?retryWrites=true&w=majority";
const mongoClient = new MongoClient(dbURI, { useUnifiedTopology: true });

let blogDB, articoliCollection;

//Create
app.get("/nuovo-articolo", async (req, res) => {
  const articolo = {
     titolo: "Titolo articolo 1",
     testo: "Testo articolo 1",
     autore: "Andrea",
     tag: ["node.js", "javascript", "mongodb"]
  };
  const ris = await articoliCollection.insertOne(articolo);
  if(ris.insertedCount === 1){
    res.send("Nuovo articolo inserito correttamente!");
  }
});

//Read
app.get("/articolo", (req, res) => {});

//Update
app.get("/modifica-articolo", (req, res) => {});

//Delete
app.get("/cancella-articolo", (req, res) => {});

async function run(){
  await mongoClient.connect();
  console.log("Siamo connessi a MongoDB Atlas");
  app.listen(3000, () => console.log("Server in ascolto sulla porta 3000..."));
  blogDB = mongoClient.db("blog");
  articoliCollection = blogDB.collection("articoli");
}

run().catch(err => console.log("Errore connessione: " + err));

使用 insertMany 传递 2 个文档,它进入 if(更改 2 中的 equal 值),但在 const ris 中有一个简单的 insertOne,我没有 insertCount。 在数据库中,文档存储没有问题。如何将insertCount 与insertOne 一起使用? console.log(ris.insertedCount) 不断给我“未定义”。

使用我编写的代码,我无法访问 if 中的 res.send。

Tnx,安德烈。

【问题讨论】:

  • insertOne 返回一个确认和新插入文档的_id 值。请注意,insertOne 只能插入一个文档(否则会失败)。
  • Tnx 的答案。问题是我不能将“insertedCount”与“insertOne”一起使用。有什么办法吗?
  • 您可以使用insertmany 并在其中插入一个文档。然后你会得到insertedCount
  • 我在 udemy 上在线学习了一步一步的课程,问题开始是因为老师使用了一对 insertOne-insertedCount。我不知道为什么它对我不起作用
  • 您的代码按原样工作(我唯一更改的是我自己的dbURI)。我看到消息“Nuovo articolo inserito correttamente!”在浏览器中,文档被插入到“blog”数据库的“articoli”集合中。

标签: javascript node.js mongodb express


【解决方案1】:

您可以将回调函数与 InsertOne 一起使用 喜欢

modal.insertOne(doc, function(err, res){
if(err) console.log("error",err)
else
 console.log(res)
})

【讨论】:

  • 异步/等待方式效果很好。如果我尝试使用 console.log(ris),它会返回一个带有“acknowledged”和“insertedId”的对象。我也需要检索一个insertedCount。
猜你喜欢
  • 2020-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-10
  • 2022-11-23
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
相关资源
最近更新 更多