gpt4 book ai didi

javascript - 在 node-mysql 中返回 graphql 解析器函数的 mysql 查询

转载 作者:行者123 更新时间:2023-11-29 04:35:21 25 4
gpt4 key购买 nike

我是 graphql 和 Node 的新手,如果这真的很简单,我很抱歉,但我正在尝试执行 mysql 查询,以便 graphql 返回查询响应供客户端读取。我遇到的问题是因为node-mysql是异步查询的,所以无法直接获取查询响应。

经过一番修修补补,我弄明白了,新代码:

var root = {
login: function({username, password}) {
var s = `select password from users where username='${username}'`;
var result = sql.query(s);
return result.then(response => {
return password == response[0].password
});
}

这是sql.query的函数定义

exports.query = function(s, callback) {
var promise = new Promise((resolve, reject) => {
con.query(s, function(err, response) {
if (err) throw err;
resolve(response);
});
});
return promise;

Graphql 现在返回响应未定义。

最佳答案

我个人使用mysql,但应该差别不大。

所以我是这样做的:

exports.getUser = ({ id }) => {
return new Promise((resolve, reject) => {
let sql = `select * from users u where u.user_id = ?`;
sql = mysql.format(sql, [id]);
connection.query(sql, (err, results) => {
if (err) reject(err);
resolve(results);
});
});
};

将查询包裹在一个 Promise 周围,它会在查询完成时解析。

然后在一个字段的解析中,你只需调用 .then promise 并做任何你想做的事情。

const viewerType = new GraphQLObjectType({
name: 'Viewer',
fields: () => ({
user: {
type: userType,
args: {
id: {
type: GraphQLInt,
},
},
resolve: (rootValue, args) => {
return getUser({ id: args.id }).then(value => value[0]);
},
},
}),
});

关于javascript - 在 node-mysql 中返回 graphql 解析器函数的 mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43876890/

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