【问题标题】:Not able to process POST METHOD using busboy in nodejs and firebase functions无法在 nodejs 和 firebase 函数中使用 busboy 处理 POST METHOD
【发布时间】:2023-01-13 04:50:49
【问题描述】:

您好我正在尝试将 post 方法与 busboy 一起用于多部分表单数据,即使代码在 localhost 上测试它时工作得很好但是在运行时 firebase 函数我收到以下错误:

在邮递员中,我得到的回复是:错误:无法处理请求

如果您需要我提供更多信息,请告诉我。

Error: Unexpected end of form
    at Multipart._final (/workspace/node_modules/busboy/lib/types/multipart.js:588:17)
    at callFinal (node:internal/streams/writable:696:27)
    at prefinish (node:internal/streams/writable:725:7)
    at finishMaybe (node:internal/streams/writable:735:5)
    at Multipart.Writable.end (node:internal/streams/writable:633:5)
    at onend (node:internal/streams/readable:693:10)
    at processTicksAndRejections (node:internal/process/task_queues:78:11)

如果有人可以帮我解决这个问题

下面是代码:

索引.js

var busboy = require('connect-busboy');

app.use(busboy());


app.use(cors()); 

const portCheck = process.env.PORT || 3001

app.use(express.json({limit: "50mb"}));
app.use(express.urlencoded({limit: "50mb", extended: true}));

app.use(cookieParser());
// app.use(express.static(path.join(__dirname, '../public-flutter')));
// app.get('/', (_, res) => {
//   res.sendFile(path.resolve(__dirname, '../public-flutter/index.html'));
// });

用户配置文件.js

router.post('/userprofile/check/busboy', async (req,res) => {
  console.log(req.body);
  
  const fields = {};
  req.busboy.on('field', (name, val) => {
    console.log('reached till here');
    
      console.log(`Processed field ${name}: ${val}.`);
    
    
    //fields.set(name,val)
    fields[name] = val;
    console.log(fields);
  });

  req.busboy.on('finish', function() {
    console.log('Done parsing form!');
    res.status(201).send();
  });
  
  req.pipe(req.busboy);
})

【问题讨论】:

  • 你修好了吗?我面临同样的问题
  • 嗨,是的,我的问题已解决,我将粘贴解决方案

标签: node.js firebase google-cloud-functions node-modules busboy


【解决方案1】:
req.busboy.on('field', (name, val) => {
  fields[name] = val;
});

req.busboy.on('finish', () => {
  try {
    notify = new userCampaign(fields);
    notify.save((err,post) => {
      if (err) {
        console.log(err);
      } 
                     
      datacombine = new userCampaign({
        title: post.title,
        status: post.status,
      })
      datacombine.save((err,postcombine) => {
        if (err) {
          console.log(err);
        }
        res.status(201).send(postcombine);
      })  
    });
  } catch(e) {
  
  }
})
            
req.busboy.end(req.rawBody);
req.pipe(req.busboy)
})

【讨论】:

    猜你喜欢
    • 2020-02-16
    • 2017-08-17
    • 2019-05-17
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 2021-07-27
    • 2016-05-08
    相关资源
    最近更新 更多