mysql - 为什么我无法通过Vue从mysql获取新页面的数据?

标签 mysql database express vue.js

很抱歉问了一个看起来很常见的问题,但我似乎无法实现。

我想单击“a”标签并打开一个新页面,根据 MySQL 数据库的 id 显示一篇文章。但我得到了 500。

谁能告诉我我的编码出了什么问题吗?谢谢。

这是“a”标签

 <article v-for='item in dataGroup'>
      <a :href="'http://localhost:8090/articlePage.html?articlePage?id='+item.ID" :name='pageId' target="__blank">
        <h4>{{item.title}}</h4>
        <p>{{item.intro}}</p>
      </a>
 </article>

我使用 Vue-resource 发送“get”请求

const vm = new Vue({
    el: '#app',
    data: {
      dataGroup: [],
    },
    methods: {
      renderArticle(url) {
        this.$http.get(url, {

        }).then((res) => {
          this.dataGroup = res.data;
        }, (res) => {
          alert(res.status)
        })

      },
    },
    created() {
      this.renderArticle('/articlePage')

    }
  })

这是我的服务器代码

module.exports = () => {
var router = express.Router();
router.get('/', (req, res) => {
  db.query(`SELECT * FROM articles_table WHERE ID='${pageId.id}'`, (err, page) => {
    if (err) {
      console.error(err);
      res.status(500).send('database error').end();
    } else {
      res.send(page);
    }
  })
})

最佳答案

  1. 您尚未为 articlePage 定义服务器端路由
  2. 您实际上从未将 pageId 发送到服务器,因此您无法在查询中使用它,因为服务器不知道该变量是什么,更不用说如何访问id 关闭它。
  3. 您没有定义返回 404 错误代码的 catchall (*) 路由,因此服务器(大概)响应 500 服务器错误,因为它不知道如何处理请求。

编辑

你的网址对我来说没有意义,它应该是这样的:

https://localhost:8090/articlePage.html?articlePageId='+item.ID

然后在服务器端,您可以访问请求之外的查询字符串中的任何变量,如下所示:

req.query.articlePageId

req.query 部分是神奇发生的地方

关于mysql - 为什么我无法通过Vue从mysql获取新页面的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49952372/

相关文章:

javascript - PromisifyAll - 回调不是函数

express - 使用 WebStorm 调试由 babel-node 运行的 nodejs

javascript - Node.js Express 不能使用路由

php - 如果用户正确输入电子邮件,我该如何正确显示错误并继续?

php - 选择数据库中具有多个实例的用户

database - 更新 Postgresql 中主键列的值

mysql - 如何将 MySQL 数据库转换为旧版本?

php - 无法从php中的数据库获取数据

php - 在我的数据库表中插入变量时出现问题?

php - 两个不同MySQL数据库之间的转换