【问题标题】:How to use Knex object in other file?如何在其他文件中使用 Knex 对象?
【发布时间】:2022-04-27 15:53:53
【问题描述】:

如何在其他文件中使用 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 ");
});

我的用户.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 对象时,它不起作用并给了我一个空对象

【问题讨论】:

    标签: sql node.js postgresql express knex.js


    【解决方案1】:

    您在User.jsindex.js 之间有循环引用。因此,当您在 User.js 中请求它时,尚未创建 db

    如果你真的想保留一个全局声明的 knex 实例,你应该创建单独的 db.js 文件,它只是创建 knex 并在 index.jsUser.js 文件中都需要它。

    【讨论】:

      【解决方案2】:

      knexfile.js

      const path = require('path');
          
          module.exports = {
            development: {
              client: 'mysql',
              connection: {
                host: 'localhost',
                port: 3306,
                user: 'root',
                password: '',
                database: 'e_transport',
              },
              migrations: {
                directory: path.join(__dirname, './src/migrations'),
              },
              useNullAsDefault: true,
            },
          
            production: {
              client: 'mysql',
              connection: {
                host: 'localhost',
                port: 3306,
                user: 'root',
                password: '',
                database: 'e_transport',
              },
              migrations: {
                directory: path.join(__dirname, './src/migrations'),
              },
              useNullAsDefault: true,
            },
          };
      

      然后创建文件 db.js 并在文件中写入代码:

      const config = require('../../knexfile')
      const knex = require('knex')(config);
      
      module.exports = knex;
      

      最后使用 where are you use

      db(table).select(data).then((result) => { console.log('result', result) });
      

      【讨论】:

        猜你喜欢
        • 2019-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多