Javascript 将数据保存到MongoDb将返回ObjectParameterError

Javascript 将数据保存到MongoDb将返回ObjectParameterError,javascript,node.js,express,mongoose,Javascript,Node.js,Express,Mongoose,我正在练习使用Node.js将数据保存到MongoDb中 我已经设置了Express server并创建了Mongoose模型,但当我试图通过Postman保存一些数据时,它会不断返回ObjectParameterError Mongoose版本为5.5.13,Express版本为4.17.1 通过Mongoose连接MongoDb没有问题,因为它至少不会返回任何错误,但问题是当我试图用post请求保存一些数据时 以下是我从my server.js发出的发帖请求: router.post("/c

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

我已经设置了Express server并创建了Mongoose模型,但当我试图通过Postman保存一些数据时,它会不断返回ObjectParameterError

Mongoose版本为5.5.13,Express版本为4.17.1

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

以下是我从my 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);
  });
});
以及定义Mongoose模式和模型的my data.js:

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
,即:
newmongoose.Schema({

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

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

中:

const ContactSchema = mongoose.Schema({
  name: String,
  number: Number
});
您忘记添加
new
,即:
newmongoose.Schema({

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


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

您正在传递参数,需要将
对象
发送到mongo db中保存

试试这个

let contact = new ContactData({name, number});

您正在传递参数,需要在其中发送
对象
以保存在mongo db中

试试这个

let contact = new ContactData({name, number});

都德,我知道我查到了这个问题,但我想你忘了用JSON格式发送POST请求。

都德,我知道我查到了这个问题,但我想你忘了用JSON格式发送POST请求。

你的错误
ObjectParameterError:Document()的参数“obj”必须是一个对象,John Doe

它说所有你没有传递的对象

在代码中编辑这一行

let contact = new ContactData(name, number);
将值作为对象传递,如下所示:

let contact = new ContactData({name, number});

您的错误
ObjectParameterError:Document()的参数“obj”必须是对象,got John Doe

它说所有你没有传递的对象

在代码中编辑这一行

let contact = new ContactData(name, number);
将值作为对象传递,如下所示:

let contact = new ContactData({name, number});

将名称和编号作为对象
像这样
让contact=newcontactdata({name,number});

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

很抱歉我没有提到我也尝试过。仍然会出现同样的错误。或者我测试的方式不对吗?我正在通过邮递员发送post请求,将数据{“name”:“John Doe”,“number”:“1413415”}放在body raw选项卡中。@Auclown{ObjectParameterError:Document()的参数“obj”必须是一个对象,它主要是由传递给mongoose的参数引起的,而mongoose不是一个对象。请尝试搜索您发送给它们的创建方法或参数,并检查它们是否缺少{}大括号。@Auclown in
let contact=new ContactData(name,number)
,modify from
(姓名,号码)
({name:name,number:number})
或者只是
({name,number})
,因为他们有相同的名字。让我知道。@Auclown我真的为你高兴)如果有帮助的话,你能接受我的回答吗?好了!祝你过得愉快:对不起,我没有提到我也尝试过。仍然会出现同样的错误。还是我测试的方式不对?我通过邮递员发送了一个发帖请求,将数据{“姓名”:“John Doe”,“号码”:“1413415”}放在body raw选项卡中。@Auclown{ObjectParameterError:Document()的参数“obj”必须是一个对象,它主要是由传递给mongoose的参数引起的,而mongoose不是一个对象。请尝试搜索您发送给它们的创建方法或参数,并检查它们是否缺少{}大括号。@Auclown in
let contact=new ContactData(name,number)
,modify from
(姓名,号码)
({name:name,number:number})
或者仅仅是
({name,number})
,因为他们有相同的名字。让我知道。@Auclown我真的为你感到高兴)如果有帮助的话,你能接受我的回答吗?完成了!祝你过得愉快:D