猿问

将数据保存到 MongoDb 会返回 ObjectParameterError

我正在练习使用 Node.js 将数据保存到 MongoDb。


我已经设置了 Express 服务器并创建了一个 Mongoose 模型,但是当我尝试通过 Postman 保存一些数据时,它不断返回 ObjectParameterError。


Mongoose 版本是 5.5.13,Express 版本是 4.17.1。


通过 Mongoose 连接到 MongoDb 没有问题,因为它至少不会返回任何错误,但问题是当我尝试使用 post 请求保存一些数据时。


这是我的 server.js 发布请求:


router.post("/create_contact", (req, res) => {

  const { name, number } = req.body;


  let contact = new ContactData(name, number);


  contact.save((error, contact) => {

    if (error) {

      return console.error(error);

    }


    return res.json(contact);

  });

});

我的 data.js 定义了 Mongoose 架构和模型:


const mongoose = require("mongoose");


const ContactSchema = mongoose.Schema({

  name: String,

  number: Number

});


module.exports = mongoose.model("ContactData", ContactSchema);

如您所见,它只有两种类型的数据:名称和编号。


我想将此简单的联系人数据保存到本地 MongoDb 中,但出现此错误:


ObjectParameterError: Parameter "obj" to Document() must be an object, got John Doe

    at new ObjectParameterError (D:\LearnReact\db\backend\node_modules\mongoose\lib\error\objectParameter.js:25:11)

    at model.Document (D:\LearnReact\db\backend\node_modules\mongoose\lib\document.js:73:11)

    at model.Model (D:\LearnReact\db\backend\node_modules\mongoose\lib\model.js:96:12)

    at new model (D:\LearnReact\db\backend\node_modules\mongoose\lib\model.js:4580:15)

    at router.post (D:\LearnReact\db\backend\server.js:28:17)

    at Layer.handle [as handle_request] (D:\LearnReact\db\backend\node_modules\express\lib\router\layer.js:95:5)

    at next (D:\LearnReact\db\backend\node_modules\express\lib\router\route.js:137:13)

    at Route.dispatch (D:\LearnReact\db\backend\node_modules\express\lib\router\route.js:112:3)

    at Layer.handle [as handle_request] (D:\LearnReact\db\backend\node_modules\express\lib\router\layer.js:95:5)



慕侠2389804
浏览 569回答 3
3回答

慕慕森

在:const ContactSchema = mongoose.Schema({  name: String,  number: Number});你忘记补充的new是: new mongoose.Schema({和{ ObjectParameterError:Document() 的参数“obj”必须是一个对象,主要是由传递给 mongoose 的不是对象的参数引起的。in let contact = new ContactData(name, number), 修改(name,number)为({name:name, number:number})或 ,({name, number})因为它们具有相同的名称。

qq_花开花谢_0

您正在传递参数,您需要在其中发送object以保存在 mongo db 中试试这个,let contact = new ContactData({name, number});

汪汪一只猫

你的错误 ObjectParameterError: Parameter "obj" to Document() must be an object, got John Doe它说所有你没有传递给它一个对象。在您的代码中编辑此行let contact = new ContactData(name, number);将您的值作为如下对象传递:let contact = new ContactData({name, number});
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答