javascript - 将数据保存到 MongoDb 中会返回一个 ObjectParameterError

标签 javascript node.js express mongoose

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

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

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

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

这是来 self 的 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: Parameter "obj" to Document() must be an object Mostly caused by parameters passed to mongoose that is NOT an object.

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

关于javascript - 将数据保存到 MongoDb 中会返回一个 ObjectParameterError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56520377/

相关文章:

javascript - 我们可以处理 adf 托管 bean 中的 Raise Application 错误吗

javascript - AngularJS + ionic 。 NG-重复。在循环的步骤之间插入元素

node.js - 使用 node.js 执行命令

javascript - 使用 socket.io 将数组从服务器发送到客户端

javascript - Mongoose 按 createdAt 排序

javascript - 当我多次单击提交按钮时,我多次收到错误消息

javascript - 如何在 Visual Studio 2015 中进行捆绑和缩小

node.js - 无法让用户使用 node 和 mongodb 的 restful API

javascript - 将每个字母替换为另一个字母

javascript - 将对象插入数组