1
從我的模型中,我從用戶的MySQL數據庫中獲取一些文章。nodejs-無法將結果返回給控制器功能
型號
var mysql = require('mysql');
var db = mysql.createPool({
host: 'localhost',
user: 'sampleUser',
password: '',
database: 'sampleDB'
});
fetchArticles: function (user, callback) {
var params = [user.userId];
var query = `SELECT * FROM articles WHERE userId = ? LOCK IN SHARE MODE`;
db.getConnection(function (err, connection) {
if (err) {
throw err;
}
connection.beginTransaction(function (err) {
if (err) {
throw err;
}
return connection.query(query, params, function (err, result) {
if (err) {
connection.rollback(function() {
throw err;
});
}
//console.log(result);
});
});
});
}
這是工作和獲取功能所需要的結果。但是它並沒有將結果返回給控制器函數(我正在返回它,但是我無法在控制器函數中獲取它,我想我在這裏做了一些錯誤)。
當我做了console.log(result)
這就是我得到的。
[ RowDataPacket {
status: 'New',
article_code: 13362,
created_date: 2017-10-22T00:30:00.000Z,
type: 'ebook'} ]
我的控制器功能如下:
var Articles = require('../models/Articles');
exports.getArticle = function (req, res) {
var articleId = req.body.articleId;
var article = {
userId: userId
};
Articles.fetchArticles(article, function (err, rows) {
if (err) {
res.json({ success: false, message: 'no data found' });
}
else {
res.json({ success: true, articles: rows });
}
});
};
誰能幫我找出什麼錯誤我在這裏做? 我很新的nodejs。謝謝!
我確實需要按照項目要求進行交易。你的代碼可以工作,但是你可以告訴我在使用你提供的代碼時,在哪裏做commit()? @Mihai Potra – Annabelle
通常你會在最後一個分支中使用'commit()',而不是用'result'調用'callback',如下所示: } else { //查詢成功。 。 connection.commit(函數(ERR){ 如果(ERR){// 我想我們需要回滾失敗的承諾太 connection.rollback(函數(){ 回調(ERR); });} else { //提交成功, callback(null,results); } }); } –