为了账号安全,请及时绑定邮箱和手机立即绑定

将数据保存到 MongoDb 会返回 ObjectParameterError

将数据保存到 MongoDb 会返回 ObjectParameterError

慕侠2389804 2021-06-16 17:05:33
我正在练习使用 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)
查看完整描述

3 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

在:


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})因为它们具有相同的名称。


查看完整回答
反对 回复 2021-06-24
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

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

试试这个,

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


查看完整回答
反对 回复 2021-06-24
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

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

它说所有你没有传递给它一个对象。

在您的代码中编辑此行

let contact = new ContactData(name, number);

将您的值作为如下对象传递:

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


查看完整回答
反对 回复 2021-06-24
  • 3 回答
  • 0 关注
  • 568 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信