【问题标题】:Receive only empty arrays with object-tags in nodejs在nodejs中只接收带有对象标签的空数组
【发布时间】:2021-11-23 18:59:19
【问题描述】:

如果我从前端 (Nuxt) 向 NodeJs 发送一个数组,我只会收到一个带有对象标签的空数组。这里有什么问题? 我正在使用 express、body-parser、multer

数组示例: [ { "content": "<p>some content</p>", "asin": "asin-id" }, { "content": "<p>some content</p>", "asin": "asin-id" } ]

Console.log(req.body)

[Object: null prototype] {
  postTitle: 'title',
  content: '[object Object],[object Object]'
}
exports.createBlogPost = async (req, res) => {
    console.log(req.body)
    try {
        const post = new BlogPost({
            postTitle: req.body.postTitle,
            content: req.body.content,
            mainImage: req.file
        })
        await post.save()

        if(post) {
            return res.status(200).json({
                success: true,
                message: 'Saved blog post successfully',
                post: post
            })
        }
    } catch(err) {
        console.log(err)
    }
}

Nuxt.js

async savePost() {
      const data = new FormData()
      data.append('postTitle', this.postTitle)
      data.append('content', this.array)
      data.append('mainImage', this.selectedFile, this.selectedFile.name)

      const blogPost = await this.$axios.$post('/api/create-blog-post', data)

      if (blogPost.success) {
        console.log(blogPost)
      }
    },

【问题讨论】:

  • 你的意思是——“content: '[object Object],[object Object]'”是一个带有object标签的空数组。
  • 是的,完全正确。它不是真的空,但它无法使用......
  • stackoverflow.com/questions/10729276/… 我希望您对 console.log 并不完全熟悉。查看链接
  • 这不是问题。它也将“空”数组保存在数据库中
  • 在进行 axios 调用之前调用 console.log(JSON.stringify(data)) 会得到什么。

标签: node.js nuxt.js


【解决方案1】:

这是我们可以通过FormData发送数组的方法

appending array to FormData and send via AJAX的cmets中找到这个

for (let i = 0; i < array.length; i++) {
  const ItemInArr = array[i]
  for (const prop in ItemInArr) {
    data.append(`content[${i}][${prop}]`, ItemInArr[prop])
  }
}

Nuxt.js

async savePost() {
      const array = this.array
      const data = new FormData()
      data.append('postTitle', this.postTitle)
      data.append('mainImage', this.selectedFile, this.selectedFile.name)

      for (let i = 0; i < array.length; i++) {
        const ItemInArr = array[i]
        for (const prop in ItemInArr) {
          data.append(`content[${i}][${prop}]`, ItemInArr[prop])
        }
      }
      const blogPost = await this.$axios.$post('/api/create-blog-post', data)

      if (blogPost.success) {
        console.log(blogPost)
      }
    },

【讨论】:

    猜你喜欢
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 2022-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多