使用module.exports在node.js模块中调用SQL函数

时间:2018-11-28 14:55:28

标签: node.js sqlite

我有一个名为main.js的主路由文件,在其中我想从一个名为database.js的模块中调用sql函数,在database.js文件中,我能够检索数据,但是当传递给main.js时它一直说数据是不确定的。

main.js

const database = require('./modules/database')

app.get('/', async(req, res) => {
    try {
        const data = database.getAll()
        console.log(data)
        res.render('home', {stock: data})
    } catch(err) {
        console.log(err.message)
        res.render('empty')
    }
})

database.js

const sqlite3 = require('sqlite3').verbose()

const db = new sqlite3.Database('./stockInventory.db', (err) => {
    if (err) return console.error(err.message)
    console.log('Connected to the "stockInventory.db" SQlite database.')
})

module.exports.getAll = () => {
    const sql = 'SELECT * FROM stock;'
    console.log(sql)
    db.all(sql, (err, data) => {
        if(err) console.error(err.message)
        //console.log(data)
        return data
    })
}

1 个答案:

答案 0 :(得分:0)

您需要回调函数,请尝试

const database = require('./modules/database')

app.get('/', async(req, res) => {
    try {
         database.getAll(function(data) {
         console.log(data)
         res.render('home', {stock: data})
    })

        } catch(err) {
            console.log(err.message)
            res.render('empty')
        }
    })

module.exports.getAll = (callback) => {
    const sql = 'SELECT * FROM stock;'
    console.log(sql)
    db.all(sql, (err, data) => {
        if(err) console.error(err.message)
        //console.log(data)
        callback(data);
    })
}