【问题标题】:Validation error for array using axios mongodb使用 axios mongodb 的数组验证错误
【发布时间】:2022-02-18 20:58:20
【问题描述】:

我的文章架构包含标签字段。

tags: {
  type: [String],
  required: [true, "A article must have a tags"],
  enum: {
    values: [
      "science",
      "technology",
      "gaming",
   ],
    message: "Article must have tags",
  },
},

表单内特定字段的我的 Pug 模板

 input#checkbox1(type="checkbox", name="science", value="science")
 | science 
 br
 input#checkbox2(type="checkbox", name="technology", value="technology")
 | technology
 br
 input#checkbox3(type="checkbox", name="gaming", value="gaming")
 | gaming
 

我的 javaScript 文件处理 POST 请求以将数据发送到 postArticle.js 中的 axios 函数

const composeArticle = document.querySelector(".formComposePost");
if (composeArticle) {
  composeArticle.addEventListener("submit", (e) => {
    e.preventDefault();
    const form = new FormData();
    form.append("author", document.getElementById("userid").value);
    form.append("title", document.getElementById("heading").value);
    let tagArray = [];
    let science = document.getElementById("checkbox1");
    if (science.checked) {
      tagArray.push(science.value);
    }
    let technology = document.getElementById("checkbox2");
    if (technology.checked) {
      tagArray.push(technology.value);
    }
    let gaming = document.getElementById("checkbox3");
    if (gaming.checked) {
      tagArray.push(gaming.value);
    }

    form.append("tags", tagArray);
    form.append(
      "imageCover",
      document.getElementById("image").files[0]
    );

    postArticle(form);

PostArticle 处理函数 我正在使用 axios 将数据发布到 API 但我不能发布数据

export const postArticle = async (data) => {
  try {
    const res = await axios({
      method: "POST",
      url: "http://127.0.0.1:3000/api/v1/articles/",
      data,
    });
    console.log(res);
    if (res.data.status === "success") {
      alert("success")
      window.setTimeout(() => {
        location.assign("/");
      }, 1000);
    }
  } catch (error) {
    console.log(error.response.data.message);
  }
};

我提交表单后控制台中的错误消息

message: 'Article validation failed: tags.0: Article must have tags'

【问题讨论】:

  • 你在form.append("tags", tagArray) 将一个数组传递给标签,但是你的tags: is declared as type: [String] ?

标签: javascript node.js mongodb express axios


【解决方案1】:

我在检查 form.append 方法时发现了它

tagArray.forEach((element) => {
  form.append("tags", element);
});

这就是将同名对象数组发送到数据库的方式

【讨论】:

    猜你喜欢
    • 2017-04-09
    • 1970-01-01
    • 2021-08-13
    • 2020-01-08
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    相关资源
    最近更新 更多