gpt4 book ai didi

mysql - 从 JavaScript 类返回 MySql 结果

转载 作者:行者123 更新时间:2023-11-29 15:17:41 26 4
gpt4 key购买 nike

我在从 Express JS 模型返回结果时遇到问题。我认为我的问题是缺乏对回调和 JS 类的理解。我似乎无法让它发挥作用。

我有以下代码。

从 server.js 我有这个路线:

app.get('/api/v1/loralocations/:id', LoraLocation.getOne);

调用下面的 Controller 操作

getOne(req, res) {
const lora_location = LoraLocationModel.findOne(req.params.id);
if (!lora_location) {
return res.status(404).send({'message': 'LoraLocation not found'});
}
return res.status(200).send(lora_location);
},
.
.
.

型号

var pool = require('./mysqlDb.js');
import moment from 'moment';

class LoraLocation {
/**
* class constructor
* @param {object} data
*/
constructor() {

}

findOne(id) {
var sql = ('SELECT test FROM Test WHERE id = ?');
pool.query(sql, [id], function (err, results, fields) {
if (err) return err;
console.log(results); //works
return results; //nope
});
}

console.log 返回结果,但没有任何内容返回到 Controller 。我已经浏览了很多帖子,但似乎找不到解决方案。我想也许我还需要在 Controller 中回调?

这对于简单的 API 项目来说是一个相当标准的模式吗?

谢谢

最佳答案

您错误地使用了回调。您可以使用 async/await 这是一个不错的选择,或者如果您想坚持使用回调,那么您需要返回回调函数。

Controller

const lora_location = LoraLocationModel.findOne(req.params.id, function (err, data) => {
});

在模型中它应该是

findOne(id, cb) {
var sql = ('SELECT test FROM Test WHERE id = ?');
pool.query(sql, [id], function (err, results, fields) {
if (err) cb(err, []);
console.log(results); //works
cb(null, results);
});
}

您可以在此链接中获取有关回调的更多详细信息 https://medium.com/better-programming/callbacks-in-node-js-how-why-when-ac293f0403ca

关于mysql - 从 JavaScript 类返回 MySql 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59574818/

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