【问题标题】:Questions about POST request to node.js from ajax (Error)关于 ajax 对 node.js 的 POST 请求的问题(错误)
【发布时间】:2017-08-05 03:54:34
【问题描述】:

当我第一次发送数据(post)时,它会被存储,但是当我第二次发送不同的数据时,它会产生错误消息

"error": "E11000 重复键错误索引:mongodb-database.users.$name_1 dup key: { : null }"

但是,在我的数据库中,没有空数据,我认为它不应该重复?我不确定是否有另一个导致错误的代码。

任何想法都可以帮助我。谢谢。

我的路线

   .post(function(req, res, next){
      Users.create(req.body).then(function(user){
        res.json(user);
      }).catch(next);
    });

我的模型

var userSchema = new Schema({
  name: {
      type: String,
      // required: [true, "Name field is required"],
       unique:true
    }   
});

我的 index.html(使用 Ajax)

  $.("form").submit(function(event){

    var order = {
      name: $username.val(),
    };

    $.ajax({
      type: 'POST',
      url: '/users',
      data: order
      success: function(newOrder){
        $result.append('<li>name: ' + newOrder.username + '</li>');
      },
      error: function(){
        alert('error saving order');
      }
    });
   });
});

</script>
</head>
<body>

<div id="result"></div>

<form action="/users" method="POST">
  <label>Username:<input type="text" id="username"></label>
  <input type="submit" value="Submit" id="post_message">
</form>

【问题讨论】:

    标签: node.js ajax mongodb model routes


    【解决方案1】:

    此错误是由于您在模型定义中添加的唯一键约束而发生的。如果要使名称字段成为必需,请从模型中删除唯一并添加要求。你可以像这样重新定义你的模型

    var userSchema = new Schema({

      name: {
          type: String,
          // required: [true, "Name field is required"],
           required: true
        }   
    });
    

    【讨论】:

    • 我做到了,但有错误。 "error": "用户验证失败:名称:路径name是必需的。"
    • 尝试打印“req.body”并查看此对象中是否存在名称字段。
    • 我写了req.body,里面没有任何价值。可能,Ajax 出了什么问题?
    猜你喜欢
    • 2018-01-19
    • 1970-01-01
    • 2023-03-28
    • 2011-06-22
    • 1970-01-01
    • 2017-04-11
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多