当前位置: 首页 > 知识库问答 >
问题:

mysqldatabase未在Postman中反映post请求

阎安邦
2023-03-14

我想使用带有mysql的npm包knex将myback-end文件夹与localhost上的mysql数据库连接起来。

步骤:

  1. 在后端项目文件夹(包含knex和mysql)
  2. 中运行nodemon server.js文件
  3. 在《邮差》中,我喜欢:

打开“邮递员”,选择“Post Requst”,复制URL:localhost:3000/myPath“,复制到正文:

{“电子邮件”:“me@gmail.com”,“密码”:“bananas”,“name”:“test”}

单击“发送”

当我打开数据库时,运行查询:“Select*FROM users;”-我在那里没有看到任何数据。

你知道会发生什么吗?

下面是server.js文件中的代码:

const express = require('express');
const db = require('knex') ({
client: 'mysql',
connection: {
 host: '127.0.0.1',
 user: 'root',
 password: 'root',
 database: 'mydatabase'
}

});

const app = express();
app.use(express.json());

const database = {
 users: [
  {
    id: '123',
    name: 'John',
    email: 'john@gmail.com',
    password: 'cookies'
    },
  {
   id: '124',
   name: 'Sally',
   email: 'sally@gmail.com',
   password: 'cake', 
   }
  ]
}

app.get('/',(req,res) => {
res.send(database.users);

})

app.post('/mypath', (req,res) => {
const {email, name, password} = req.body;
db('users').insert({
name: name,
email: email,
password: password
}).then (console.log(req.body))
   res.json(database.users);
})

app.listen(3000, () => {
  console.log('app is running on port 3000');
})

由于某种原因,我得到了错误:“Node:13376 UnhandledPromiseRejectionWarning:UnhandledPromiseRejection.此错误源于在没有catch块的情况下抛出async函数内部,或拒绝未用.catch()处理的承诺。DeprecationWarning:未处理的PromiseRejection被弃用。”

共有1个答案

陈瀚玥
2023-03-14

您需要从Express配置bodyparser中间件。为此,只需进行以下配置

const express = require('express');
const app = express();

app.use(express.json()); //<-- this is the configuration you need.
//Your db configuration

app.post('/mypath', (req,res) => {
   console.log(req.body) //now your body is defined.
})

如果请求带有'content-type':application/json头,那么激活express.json()将解析请求。

您有rejectionErrorHandler,因为您必须在.then()函数之后捕获错误。这里有一个例子:

exports.createUser = (req, res) => {
    db.get().collection('user').insertOne({ "name": req.body.name, "login": req.body.login, "password": req.body.password }).then((result) => {
        res.set('location', `/users/${result.insertedId}`)
        res.status(201).end()
    }).catch((err) => {
        res.status(500).json({ errors: err.message })
    })
}
 类似资料:
  • 我有一个简单的helper来发送post请求并返回结果,它应该与自定义构建的API进行通信,所有的工作都离不开一个特定的URL。 我的helper方法如下所示(使用RestSharp) 我要求如下: 非常感谢任何帮助。

  • 我向我的flask应用所在的服务器发出了python post请求。它运行良好,我能够获得所需的数据。 但我想用POSTMAN测试API。我无法做到这一点,因为在某种程度上我对邮递员并不熟悉。 下面是我的python代码。 我正在努力解决这样一个问题:我试图发布到服务器上的数据和文件应该是原始json还是表单数据,或者是正文的x-www-form-urlencoded部分。还有实际的结构应该是什么

  • 我有一个POST请求,我首先在邮递员中尝试过,我想在重定向之前捕获状态代码。在邮递员中,我得到了307(我设置了设置,这样它就不会跟随重定向)。 邮递员 但当我尝试使用Restasured时,它仍然被重定向,所以我得到了200个状态码,而不是307。 使用302状态码的GET请求尝试了相同的方法,并且该方法有效。 我读过一篇文章/帖子,内容是关于Restassed没有重定向帖子请求,但那是3年前的

  • 当我尝试向邮递员发送邮件请求时,仍然会出现这个错误。 我可以从我的DRFlocalhost成功地发出相同的帖子请求,但是当我尝试邮递员时,我得到了上面的错误。 我该怎么解决呢? Views.py Serializers.py urls.py 项目urls.py 更新 我根据评论中的错误消息和指南进行了一些更改,现在可以创建用户了。 问题是,在发送表单中的用户凭据后,我在postman中收到了这个错

  • 我向REST API发出一个上传文件的POST请求。在《邮差》里一切都很好。我添加了基本授权和从服务器获得的自定义CSRF(XSRF)令牌。 我想做同样的使用卷曲。我从邮递员那里抄来的代码,似乎行不通。我认为该错误与CSRF有关,因为如果我关闭服务器上的CSRF,并且在没有CSRF令牌的情况下进行相同的cURL调用,那么一切工作都很好。 下面是更多的细节:这是Postman给出的cURL命令: 这

  • 我有一个python代码,用来创建一个json文件,作为post请求中的数据。 变量如下所示: 当我打印上述变量时,我得到以下输出: 当我在我的邮递员请求上使用以下输出时,它会像我期望的那样工作。但是当我使用相同的变量发送带有以下函数的超文本传输协议请求时,我得到了一个错误。 为什么我的输出在postman上工作,而不是在python本身?