Javascript nodeJS中的导出
好的,我有路线:Javascript nodeJS中的导出,javascript,mysql,node.js,express,Javascript,Mysql,Node.js,Express,好的,我有路线: var express = require('express'); var router = express.Router(); var articles = require('../model/articles.js'); router.get('/all', function(req, res, next) { res.json(articles.getAll()); console.log( "From route: " + articles.getAll())
var express = require('express');
var router = express.Router();
var articles = require('../model/articles.js');
router.get('/all', function(req, res, next) {
res.json(articles.getAll());
console.log( "From route: " + articles.getAll());
});
module.exports = router;
我有一个模型:
var mysql = require("mysql");
var con = mysql.createConnection({
host: "localhost",
user: "rest_news",
password: "rest_news",
database: "rest_news"
});
exports.getAll = function () {
con.query('SELECT * FROM articles', function(err, rows){
if(err) {
return err;
} else {
console.log("From model: " + rows);
return rows;
}
});
};
我需要从mysql获取所有文章,我使用该模型文章,方法getAll()。我在控制台中看到:
From route: undefined
GET /article/all 200 22.802 ms - -
From model: [object Object],[object Object]
From model: [object Object],[object Object]
getAll()第二次工作,为什么?使用回调函数:
var mysql = require("mysql");
var con = mysql.createConnection({
host: "localhost",
user: "rest_news",
password: "rest_news",
database: "rest_news"
});
exports.getAll = function (callbackFunction) {
con.query('SELECT * FROM articles', callbackFunction);
};
现在,在您的路线中,请执行以下操作:
var express = require('express');
var router = express.Router();
var articles = require('../model/articles.js');
router.get('/all', function(req, res, next) {
articles.getAll(function(err, articles){
if (err) {
res.status(500).send({message: 'Ups something bad happened!'});
}else{
res.json(articles);
}
})
});
module.exports = router;
说明:节点使用回调通知主循环发生了什么。在代码中,当您说:
res.json(articles.getAll());
实际上,您正在发回未定义的内容,这就是查询函数中存在文章的原因,因为这部分代码是在获取文章之后执行的,并且
res.json(articles.getAll())
在您输入模型函数并将查询发送到sql db之后立即执行。使用回调函数:
var mysql = require("mysql");
var con = mysql.createConnection({
host: "localhost",
user: "rest_news",
password: "rest_news",
database: "rest_news"
});
exports.getAll = function (callbackFunction) {
con.query('SELECT * FROM articles', callbackFunction);
};
现在,在您的路线中,请执行以下操作:
var express = require('express');
var router = express.Router();
var articles = require('../model/articles.js');
router.get('/all', function(req, res, next) {
articles.getAll(function(err, articles){
if (err) {
res.status(500).send({message: 'Ups something bad happened!'});
}else{
res.json(articles);
}
})
});
module.exports = router;
说明:节点使用回调通知主循环发生了什么。在代码中,当您说:
res.json(articles.getAll());
实际上,您返回的是未定义的,这就是查询函数中存在文章的原因,因为这部分代码是在获取文章和
res.json(articles.getAll())之后执行的
在您进入模型函数并将查询发送到sql db后立即执行。不起作用,因为您将异步代码视为同步代码。getAll函数不返回任何内容。不起作用,因为您将异步代码视为同步代码。getAll函数不返回任何内容。是的,这很有效,很抱歉重复。请给出导出示例。getAll for mongodb??是否使用mongoose或mongodb驱动程序?是的,这很有效,很抱歉重复。请给出导出示例。getAll for mongodb??是否使用mongoose或mongodb驱动程序?