我是sails js的初学者,graphql.i做了很多研究,但是找不到任何使用sails js和graphql.please帮助我从MySQL数据库获取数据的方法。 我尝试使用sails-graphql
npm install sails-graphql --save
模型文件
module.exports = {
attributes: {
id: {
primaryKey: true,
type: 'integer'
},
Description: {
type: 'string'
}
}
};
和graphqlController.js
module.exports = {
index(req, res) { // default index action
if (!schema) {
schema = generateSchema.generateSchema(sails.models);
}
console.log(graphql.printSchema(schema));
graphql.graphql(
schema, // generated schema
'{customer { id }}', // graphql query string
null, // default rootValue
{ // context
request: sails.request, // default request method - required
reqData: { // object of any data you want to forward to server's internal request
headers: {/*your headers to forward */ }
}
}
).then((result) => {
console.log(result);
// errors handling
res.json(result.data);
});
}
};
但它每次都会返回空数据
{
"customer": null
}
打包github链接sails-graphql
答案 0 :(得分:0)
您只需要创建rootValue对象,而无需在qraphql函数中将rootValue对象置为null(请参见下面的代码)
const rootValue = {
customer : async () => {
try{
const result = await YOUR_MODEL_NAME.find()
return result
} catch(err) {
return err
}
}
}
graphql.graphql(
schema, // generated schema
'{customer { id }}', // graphql query string
**rootValue,** // defined above
{ // context
request: sails.request, // default request method - required
reqData: { // object of any data you want to forward to server's internal request
headers: {/*your headers to forward */ }
}
}
).then((result) => {
console.log(result);
// errors handling
res.json(result.data);
});
基本上,您没有编写任何函数来处理您的请求。 因此,在这里,我刚刚创建了一个函数(注意:函数名称必须与请求查询匹配),并将其放在对象中,然后在graphql函数中调用该对象。
我希望这可以帮助您解决问题:)