【问题标题】:Console.log resolver data in graphqlgraphql 中的 Console.log 解析器数据
【发布时间】:2019-03-28 01:51:31
【问题描述】:

我正在尝试在 graphql 应用程序中控制台记录解析器。 graphiql 部分有效(我可以启动服务器并查看 graphql 仪表板,然后使用根查询在浏览器窗格中检索结果),但我无法在浏览器控制台中 console.log 相同的结果。以下是我的代码:

const GetBooks = {
 type: new GraphQLList(BookTypes),
 args: {},
 resolve() {
    return new Promise((resolve, reject) => {
        let sql = singleLineString`
        select * from books
        `;
        sql = mysql.format(sql);
        pool.query(sql, (err, results) => {
            if (err) {
                reject(err);
            }

            resolve(results);
            console.log(resolve(results));
        });
    });
   }
 };

“不起作用”的部分是代码的 console.log(resolve(results)) 部分。有人能指出为什么这不起作用吗?

【问题讨论】:

    标签: graphql


    【解决方案1】:

    您使用的console.log 不在客户端。

    它在服务器端记录结果,而不是在浏览器上。检查启动 GraphQL 服务器的命令行,日志应该在那里。

    【讨论】:

    • 我也是这么想的,但是命令行也没有输出console.log;我可以看到我在 index.js 和 schema.js 中设置的其他 console.log 消息,但查询文件没有输出,即使 graphiql 仪表板有效!
    • 我的情况一模一样,你解决了吗?
    • @BenoîtPilatte 有人能解决这个问题吗?
    • @DanMandel 我的解决方法是抛出一个错误并在浏览器上获取它。但我只需要这样做一次,所以我不会去寻找错误。
    • 上面的问题代码在服务器端。 select * from.. 是服务器代码。我最好的猜测是graphql要么以某种方式覆盖console object——要么在另一个child-process中运行——而console.log ..发生在子进程上......所以我们在父进程上看不到任何东西。并且standard error stream 被捕获,并发送到浏览器.. 这就是为什么您可以在浏览器中的resolver 中看到throw Error - 但main process 中没有出现异常。这也是他们防止main process 表单崩溃的方法 - 并让客户知道它。
    猜你喜欢
    • 2018-10-21
    • 1970-01-01
    • 2019-07-14
    • 2018-07-01
    • 2020-11-12
    • 1970-01-01
    • 2020-07-30
    • 2021-06-17
    • 2018-08-05
    相关资源
    最近更新 更多