gpt4 book ai didi

node.js - 我应该在哪里进行数据库查询以及为什么我没有得到查询结果?

转载 作者:太空宇宙 更新时间:2023-11-04 01:11:08 24 4
gpt4 key购买 nike

我是 Node.js 和 Express 框架的新手。

谁能告诉我我这样做是否正确?

我创建了一个database.js作为模块,代码包含:

var mysql = require('mysql'),
dateFormat = require('dateformat'),
db = require('./dashboard');

var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'selenium',
timezone: '-07:00'
});

exports.selectalldate = function() {
connection.query('SELECT * FROM date', function (err, rows, fields) {
if (err) {
console.log(err);
}
if(rows.length > 0) {
for(i = 0; i < rows.length; i ++) {
rows[i].date = dateFormat(rows[i].date, "yyyy-mm-dd")
}
return rows;
} else {
return false;
}
});
}

我在 app.js 中需要它,当我调用 selectalldate() 来从 app.js 中的数据库获取所有日期并查看结果时。我变得不确定。我在这里做错了什么?

var express = require('express')
, routes = require('./routes')
, user = require('./routes/user')
, http = require('http')
, path = require('path')
, fs = require('fs')
, file = __dirname + '/test2'
, get = require('./routes/get')
, db = require('./routes/database')
;

app.get('/dashboard', function(req, res) {
var datee = db.selectalldate();
console.log(datee);
res.render('dashboard', {title: 'Selenium Dashboard', date: datee});
});

最佳答案

这是因为 Node 的异步特性。涉及网络的所有内容(数据库查询、Web 服务等)都是异步的。

因此,您应该重构 selectalldate() 方法以接受回调。通过该回调,您将能够使用从数据库获取的数据成功呈现模板。

最后,它会是这样的:

exports.selectalldate = function(callback) {
connection.query('SELECT * FROM date', function (err, rows, fields) {
if(rows.length > 0) {
for(i = 0; i < rows.length; i ++) {
rows[i].date = dateFormat(rows[i].date, "yyyy-mm-dd")
}
}

callback(err, rows);
});
}

app.get('/dashboard', function(req, res) {
db.selectalldate(function(err, datee) {
if (err) {
// Handle the error in some way!
return;
}

res.render('dashboard', {title: 'Selenium Dashboard', date: datee});
});
});

关于node.js - 我应该在哪里进行数据库查询以及为什么我没有得到查询结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17409932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com