我是 node.js 的新手,目前正在開發演示專案,所以我的要求是獲取我通過函式呼叫的 userId 的計數,并且此函式在路由之外宣告,但我未定義但在同一函式中獲取計數值但是當我回傳時,計數仍然在路線中未定義。
代碼:
var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
const usersQuery = "SELECT * FROM users";
dbConn.query(usersQuery,function(err,rows) {
if(err) {
console.log('this error',res);
} else {
let total=getCount(); // calling function placed outside
console.log(total);
}
});
});
在外部宣告的函式回傳計數:
function getCount(){
const usersQuery = "SELECT count(id) as cnt FROM users";
dbConn.query(usersQuery,function(err,rows) {
if(err) {
console.log('failed to get count');
} else {
return rows; // retun count
}
})
}
uj5u.com熱心網友回復:
您需要回傳結果 query
function getCount(){
const usersQuery = "SELECT count(id) as cnt FROM users";
return dbConn.query(usersQuery,function(err,rows) {
if(err) {
console.log('failed to get count');
} else {
return rows; // retun count
}
})
}
請注意,可能會回傳一個Promise您需要正確處理的值。
uj5u.com熱心網友回復:
最后我通過在 node js 中使用 Promise() 得到了所需的輸出
代碼:
var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
const Query = "SELECT * FROM t1";
dbConn.query(Query,function(err,rows) {
if(err) {
// write some code
} else {
// call to promise
getData().then(function (outputVal) {
console.log(outputVal[0].Usr);
}).catch(function () {
// write error here
});
}
});
});
// 承諾代碼
function getData() {
return new Promise(function (resolve, reject) {
// setTimeout(function () {
const MQuery = "SELECT count(id) as Usr FROM t2";
dbConn.query(MQuery , function (err, rows) {
if (err) {
reject();
} else {
resolve(rows);
}
// }, 1000);
})
})
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/400250.html
標籤:javascript mysql 节点.js 表达
