Sql 如何在其他文件中使用Knex对象?

Sql 如何在其他文件中使用Knex对象?,sql,node.js,postgresql,express,knex.js,Sql,Node.js,Postgresql,Express,Knex.js,如何在其他文件中使用knex db对象 比如说 我的index.js const app = require("express")(); const cors = require("cors"); const bodyParser = require("body-parser"); const user = require("./routes/User"); const product = require("./routes/Product"); //----------------- con

如何在其他文件中使用knex db对象

比如说

我的index.js

const app = require("express")();
const cors = require("cors");
const bodyParser = require("body-parser");
const user = require("./routes/User");
const product = require("./routes/Product");

//-----------------
const db = require("knex")({
  client: "pg",
  connection: {
    host: "127.0.0.1",
    user: "postgres",
    password: "",
    database: "Razer"
  }
});

//-----------------
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

//-----------------
app.use("/user", user);
app.use("/product", product);

//-----------------
module.exports = db;

//-----------------
app.listen(5000, () => {
  console.log("App listening on PORT 5000 ");
});
my User.js

const express = require("express");
const router = express.Router();
const db = require("../index");

router.get("/", async (req, res) => {
  console.log(db);
});

module.exports = router;

当我试图在User.js中使用db对象时,它不起作用,并给我一个空对象

你在User.js和index.js之间进行循环引用。因此,在User.js中请求db时,尚未创建db

如果您确实希望保留一个全局声明的knex实例,那么应该创建单独的 db.js文件,该文件仅创建knex,并在index.js和User.js文件中都需要它