【问题标题】:When I want to update data in the mongodb - I get 'invalid schema, expected mongodb'当我想更新 mongodb 中的数据时 - 我得到 'invalid schema, expected mongodb'
【发布时间】:2020-02-26 12:21:25
【问题描述】:

有路由器,连接到数据库。插入按预期运行。 Get-data 显示所有插入的数据,但 update 操作异常。 console.log 问题:

"(node:10860) UnhandledPromiseRejectionWarning: 错误: 无效 架构,预期的 mongodb"

。 我不更新我的数据。我可以做些什么来更新我的数据?

index.js:

var express = require("express");
var router = express.Router();
let mongo = require("mongodb").MongoClient;
let objectId = require("mongodb");
let assert = require("assert");

let url = "mongodb://localhost:27017/test";
/* GET home page. */
router.get("/", function(req, res, next) {
  res.render("index");
});
router.get("/get-data", (req, res, next) => {
  let resultArray = [];
  mongo.connect(
    url, { native_parser: true },
    (err, db) => {
      assert.equal(null, err);
      let cursor = db.collection("testdata").find();
      cursor.forEach(
        (doc, err) => {
          assert.equal(null, err);
          resultArray.push(doc);
        }, () => {
          db.close();
          res.render("index", { items: resultArray });
        });
      });
  });
router.post("/insert", (req, res, next) => {
  let item = {
    title: req.body.title,
    content: req.body.content,
    author: req.body.author
  };
  mongo.connect(
    url, { native_parser: true },
(err, db) => {
      assert.equal(null, err);
      db.collection("testdata").insertOne(item, (err, result) => {
        assert.equal(null, err);
        console.log("Item inserted");
        db.close();
      });
    });
    res.redirect("/");
  });

router.post("/update", (req, res, next) => {
  let item = {
    title: req.body.title,
    content: req.body.content,
    author: req.body.author
  };
  let id = req.body.id;

  mongo.connect(
    url,{ native_parser: true },
    (err, db) => {
      assert.equal(null, err);
      db.collection("testdata").updateOne(
        { _id: objectId(id) },
        { $set: item },
        (err, result) => {
          assert.equal(null, err);
          console.log("Item updated");
          db.close();
        });
    });
 });

【问题讨论】:

  • 我做了一点谷歌搜索。其他人能够通过使用 npm install mongodb 更新他们的节点驱动程序来解决此错误这是否解决了您的问题? stackoverflow.com/questions/56765007/…
  • @LaurenSchaefer,它不能决定这个问题。我升级了 mongodb 模块,但我也收到错误:'(node:12191) UnhandledPromiseRejectionWarning: E​​rror: invalid schema, expected mongodb'

标签: node.js mongodb


【解决方案1】:

为什么会出现错误:

您以错误的方式导入 ObjectId

修复:

像这样简单地导入ObjectId

let objectId = require("mongodb").ObjectID;

而不是这个:

let objectId = require("mongodb")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 2021-09-19
    • 2015-01-16
    • 2022-01-19
    • 1970-01-01
    相关资源
    最近更新 更多