即使没有设置授权计划也无法使用 Postman 访问 Sqlite 数据库

Can't Access Sqlite db with Postman Even with No Auth Schedule Set Up

我让 Postman 试图访问我的 API 一个在后端使用 express 的 vue 应用程序。我将 express 服务器设置为使用 sqlite3,服务器似乎 运行 但我只在尝试通过 api 调用访问其方法时出错。

首先,我使用基本命令 vue create . 创建了 vue 应用程序,并添加了几个额外的选项,例如 vuex、路由器、sass 等...然后我创建了一个名为 backend 有 2 个文件 index.jsconfig.js。以下是文件:

index.js

const express = require("express");
const bodyParser = require("body-parser");
const cors = require("cors");
const app = express();
const { db, port } = require("./config.js");

app.use(bodyParser.json());
app.use(
  bodyParser.urlencoded({
    extended: true,
  })
);
app.use(cors());

const getUsers = (request, response) => {
  console.log("ran /test");
  db.query("SELECT * FROM wallets", (error, results) => {
    if (error) {
      throw error;
    }
    response.status(200).json(results.rows);
  });
};

const registerUser = (request, response) => {
  const { wallet } = request.body;
  insertNewUser(wallet)
    .then((results) => {
      if (results) {
        console.log("it worked");
      }

      response
        .status(201)
        .json({ status: "success", message: "Wallet added." });
    })
    .catch((error) => {
      response.status(500).json({ status: "fail", message: error });
    });
};

function insertNewUser(wallet) {
  return db.query("INSERT INTO wallets (wallet) VALUES ()", [wallet]);
}

app.route("/test", getUsers);
app.route("/register", registerUser);

app.listen(port);
console.log("App is running on port " + port);

config.js

const sqlite3 = require("sqlite3");
const path = require("path");

let db = new sqlite3.Database(
  path.resolve(__dirname, "test.db"),
  sqlite3.OPEN_READWRITE,
  (err) => {
    if (err) {
      console.error(err.message);
    }
    console.log("Connected to the database.");
  }
);

module.exports = {
  db,
  port: "30005",
};

我使用 db sqlite 浏览器在 backend 目录中创建了一个 sqlite 数据库,如下图所示:

这是我向 test 函数发送 postman get 请求时得到的结果,该函数应该显示数据库中的钱包条目

顺便说一句,我正在 运行 将此服务器与 yarn run start:server 连接起来,它是我在根项目目录中的 package.json 文件中的一个脚本。这是我的 package.jsonscripts 部分的样子:

"scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint",
    "start:server": "nodemon backend/index.js --ignore 'src/**/*.js'"
  },

为什么我的 get 请求失败了?

有两件事导致了这个问题。首先,我使用 get 而不是 query。其次,我使用 app.get 而不是 app.route。正确运行 /test api 的代码如下所示:

index.js

const express = require("express");
const bodyParser = require("body-parser");
const cors = require("cors");
const app = express();
const { db, port } = require("./config.js");

app.use(bodyParser.json());
app.use(
  bodyParser.urlencoded({
    extended: true,
  })
);
app.use(cors());

const getUsers = (request, response) => {
  console.log("ran /test");
  db.get("SELECT * FROM wallets", (error, results) => {
    if (error) {
      throw error;
    }
    response.status(200).json(results.rows);
  });
};

app.get("/test", getUsers);

app.listen(port);
console.log("App is running on port " + port);