繁体   English   中英

将数据保存到 MongoDb 会返回 ObjectParameterError

[英]Saving data into MongoDb returns an 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)
    at D:\LearnReact\db\backend\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (D:\LearnReact\db\backend\node_modules\express\lib\router\index.js:335:12)
    at next (D:\LearnReact\db\backend\node_modules\express\lib\router\index.js:275:10)
    at Function.handle (D:\LearnReact\db\backend\node_modules\express\lib\router\index.js:174:3)
    at router (D:\LearnReact\db\backend\node_modules\express\lib\router\index.js:47:12)
    at Layer.handle [as handle_request] (D:\LearnReact\db\backend\node_modules\express\lib\router\layer.js:95:5)
    at trim_prefix (D:\LearnReact\db\backend\node_modules\express\lib\router\index.js:317:13)

我错过了什么? 在此先感谢您的帮助。

在:

const ContactSchema = mongoose.Schema({
  name: String,
  number: Number
});

您忘记添加new内容: new mongoose.Schema({

{ ObjectParameterError:Document() 的参数“obj”必须是一个对象,主要是由传递给 mongoose 的不是对象的参数引起的。

let contact = new ContactData(name, number) ,从(name,number)修改为({name:name, number:number})或仅({name, number})因为它们具有相同的名称。

您正在传递参数,您需要在其中发送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});

伙计,我知道我挖掘了这个问题,但我认为您忘记以 JSON 格式发送 POST 请求。

将姓名和号码作为这样的对象let contact = new ContactData({name, number});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM