节点中字符串的限制。js/express

Limit for strings in node.js/express

我正在使用 node.js/express 将 base64 编码的图像作为字符串发送到我的后端。我想将它存储在我的 Postgres 数据库中,但我无法获取该字符串。这个有限制吗?

在到达我的 AJAX 前端调用之前,我用以下内容填充数据:

var data = {picture: ""};

const reader = new FileReader();
const get_picture = new Promise((resolve, reject) => {
    //event handler
    reader.onload = resolve;
    reader.onerror = reject;
    //read image
    reader.readAsDataURL(file);
})
.then(() => {
    data.picture = reader.result;
})
.catch(() => {
    show_modal(modal.title.error_custom, modal.body.error_image);
});

console.log(target_data);

$.ajax({ [...]

我的控制台显示如预期:

Object { picture: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFIA…"}

这是快速路线:

router.post("/upload_image", (req, res, next) => {
  const picture = req.body.picture;

  console.log("test");
  console.log(picture);
}

这在我的后端控制台中显示了一个空行。参数的大小有限制吗?或者我做错了什么?谢谢

编辑:这适用于 async/wait

$("#form").submit(async function (event) {
[...]
  var data = {picture: ""};

  const get_picture = await new Promise((resolve, reject) => {
    //event handler
    reader.onload = resolve;
    reader.onerror = reject;
    //read image
    reader.readAsDataURL(file);
  })
  .then(() => {
    data.picture = reader.result;
  })
  .catch(() => {
    show_modal(modal.title.error_custom, modal.body.error_image);
  });

  $.ajax({ [...]

您的 ajax 调用不会等待文件的读取过程,而是发送顶部初始化对象 (var data = {picture: ""})。 您应该在 .then()

中调用您的 ajax 请求
var data = {picture: ""};

const reader = new FileReader();
const get_picture = new Promise((resolve, reject) => {
    //event handler
    reader.onload = resolve;
    reader.onerror = reject;
    //read image
    reader.readAsDataURL(file);
})
.then(() => {
    data.picture = reader.result;
    $.ajax({[...]});
})
.catch(() => {
    show_modal(modal.title.error_custom, modal.body.error_image);
});