【问题标题】:Express with FIREBASE I get TypeError: Cannot read property 'trim' of undefinedExpress with FIREBASE 我得到 TypeError: Cannot read property 'trim' of undefined
【发布时间】:2020-06-01 16:16:56
【问题描述】:

我在一个 firebase 项目中工作,我正在尝试按照教程进行操作,我可以找到解决方法。 我在其他项目中看到过这种类型的验证,它应该可以工作,但我不知道我的代码中缺少什么。

我明白了

TypeError: 无法读取未定义的属性“trim”

这是一个 POST 请求

exports.createContact= (req, res)=>{
    if (req.body.body.trim() === '') {   // ERROR HERE WHEN VALIDATING

    return res.status(400).json({ body: 'Body must not be empty' });
  }
...
}

这是 index.js

"use strict";
const functions = require('firebase-functions');
const express = require('express');
const app = express();
const {createContact}= require('./handlers/contacts');

//middle ware 

app.use(express.json());
app.use(express.urlencoded({ extended: false }));

// server functions

app.post('/contact', createContact);

exports.api = functions.https.onRequest(app);

感谢您的帮助

【问题讨论】:

  • API 的客户端如何发出请求?请把它贴在 OP 上好吗?
  • 你好 @laruiss 我正在使用 POSTMAN 发送 post 请求 http://localhost:5000/api/contact 我把一个原始的身体像 JSON 格式 { "phone": "4444444" }
  • 所以在req.body中,你会得到一个对应你发送的对象,所以{phone: '4444444},不会有req.body.body,只有req.body.phone
  • 嗨@laruiss,我可以只使用req.body进行验证,但我现在的问题是为什么我应该使用req.body.body,或者它是否对firebase特别有用?
  • 谁告诉你必须或应该使用req.body.body

标签: javascript node.js firebase express


【解决方案1】:

正如你所问的(req.body.body),你可以这样做,

if (!(req.body.body || '').trim()) {   // ERROR HERE WHEN VALIDATING
    return res.status(400).json({ body: 'Body must not be empty' });
}

但是如果你的请求体是这样的req.body,你可以这样做,

if (!req.body || !Object.keys(req.body).length) { 
    return res.status(400).json({ body: 'Body must not be empty' });
}

【讨论】:

  • 我使用了(!(req.body.body || '').trim()),但它总是返回“正文不得为空”,即使我发送正文或将其留空。
  • 我可以只使用req.body 进行验证,但我现在的问题是我为什么要使用req.body.body
  • 认为您在正文中传递电子邮件,req.body.email 意味着 req.body 对象具有属性电子邮件...同样,req.body.body 意味着您的 req.body 对象具有密钥主体。所以你的请求正文是req.body 而不是req.body.body
猜你喜欢
  • 2023-02-22
  • 2021-06-25
  • 2019-08-13
  • 2021-09-25
  • 2020-05-10
  • 1970-01-01
  • 2017-04-24
  • 2023-03-15
  • 2019-05-26
相关资源
最近更新 更多