node.js получает результаты запроса MySQL, используя пользовательский модуль - PullRequest
0 голосов
/ 06 мая 2019

Как я могу получить результаты выборочного запроса? Я получаю пустой / ноль. Также после прочтения какой-то статьи я попробовал логику обратного вызова и попробовал функцию обратного вызова, но пока не повезло.

Мой пользовательский модуль, весь код ниже.

module.exports = {
    all: function (cb) {

        con.query("SELECT * from `posts`", function (err, posts, fileds) {
            if (err) {
                return cb(null, err);
            } else {
                return cb(null, posts);
            }
            // console.dir(posts);
        });
    },
    store: function (req, res, next) {

        // get values..
        const title = req.body.title;
        const body = req.body.body;
        const filename = (req.file != null) ? req.file.filename : null;
        var sql = "INSERT INTO `posts` (`post_id`, `title`, `body`,`file`, `created_at`) VALUES (NULL, '" + title + "', '" + body + "', '" + filename + "', CURRENT_TIMESTAMP);";
        con.query(sql, function (err) {
            console.log('Error' + err);
        });

        next();

        // redirect
        res.redirect("/admin/post");
    },
    delete: function (req, res, next) {},
    edit: function (req, res, next) {},
    update: function (req, res, next) {}
}

Я пробовал cb (обратный вызов), но там написано

TypeError: cb не является функцией

Не повезло в получении результатов. Пожалуйста, руководство и помощь.

также я получаю все функциональные данные в другом файле, подобном этому

var postModel = require('../models/posts');
console.log("admin.js :" + postModel.all());

Ответы [ 2 ]

0 голосов
/ 06 мая 2019

Создана простая функция обратного вызова, и это решило мою проблему. пожалуйста, смотрите код ниже.

    module.exports = {
    all: function (callback) {

        const newLocal = function (err, posts) {
            if (err) {
                return callback(null, err);
            }
            else {
                // console.dir(posts);
                return callback(posts);
            }
        };
        con.query("SELECT * from `posts`", newLocal);
    },
    store: function (req, res, next) {

        // get values..
        const title = req.body.title;
        const body = req.body.body;
        const filename = (req.file != null) ? req.file.filename : null;
        var sql = "INSERT INTO `posts` (`post_id`, `title`, `body`,`file`, `created_at`) VALUES (NULL, '" + title + "', '" + body + "', '" + filename + "', CURRENT_TIMESTAMP);";
        con.query(sql, function (err) {
            console.log('Error' + err);
        });

        next();

        // redirect
        res.redirect("/admin/post");
    },
    delete: function (req, res, next) {},
    edit: function (req, res, next) {},
    update: function (req, res, next) {}
}

Обновлен код:

const newLocal = function (err, posts) {
if (err) {
 return callback(null, err);
}
 else {
 // console.dir(posts);
 return callback(posts);
}
};
con.query("SELECT * from `posts`", newLocal);
0 голосов
/ 06 мая 2019

Параметр должен быть функцией обратного вызова, как показано ниже.

postModel.all(function(response) {
    console.log(response);//you will get result here
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...