Вызовите функции sql в модулях node.js, используя module.exports - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть файл основных маршрутов с именем main.js, в котором я хочу вызывать функции sql из модуля database.js. В файле 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 голосов
/ 28 ноября 2018

Вам нужна функция обратного вызова, попробуйте это

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);
    })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...