将数据保存到 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 定义了猫鼬模式和模型:

 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)

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

原文由 Auclown 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 491
2 个回答

在:

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

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

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

in let contact = new ContactData(name, number) , modify from (name,number) to ({name:name, number:number}) or just ({name, number}) as they have the same name.

原文由 Matin Sasan 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

尝试这个,

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

原文由 Amol B Jamkar 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题