带有sails js和mysql的Graphql

时间:2017-12-26 07:29:15

标签: sails.js graphql

我是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

1 个答案:

答案 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函数中调用该对象。

我希望这可以帮助您解决问题:)