graphql 中的 Console.log 解析器数据

Rog*_*ger 11 graphql

我正在尝试在 graphql 应用程序中 console.log 解析器。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));
        });
    });
   }
 };
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*iel 3

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

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

  • 我也是这么想的,但是命令行也没有输出console.log;我可以看到我在 index.js 和 schema.js 中设置的其他 console.log 消息,但查询文件没有输出,即使 graphiql 仪表板工作! (6认同)
  • 我的情况一模一样,请问你解决了吗? (2认同)
  • @DanMandel 我的解决方法是抛出一个错误并在浏览器上拾取它。但我只需要做一次,所以我不会去寻找错误。 (2认同)
  • 上面的问题代码是在服务器端。`select * from..` 是服务器代码。我最好的猜测是 graphql 要么以某种方式覆盖“控制台对象” - 或者在另一个“子进程”中运行 - 并且“console.log ..”发生在子进程上......所以我们看不到任何东西在父进程上。并且“标准错误流”被捕获,并发送到浏览器。这就是为什么您可以在浏览器的“解析器”中看到“抛出错误” - 但在“主进程”中没有显示异常。这也是他们防止“主进程”表单崩溃的方法 - 并让客户知道这一点。 (2认同)