【问题标题】:Resolver returning empty array but cause is not identifiable解析器返回空数组但原因无法识别
【发布时间】:2021-08-20 19:49:16
【问题描述】:

我有一个突变,它有一个简单地将记录插入数据库的解析器,但问题是createPost 不断返回一个空数组,结果我收到了这个错误"message": "Cannot return null for non-nullable field Post.text."

Mutation/index.js

import { query } from "@/server/db";

export const createPost = async (_, { post }) => {
  const createPost = await query(
    `
    INSERT INTO posts (text, user_id)
    VALUES (?, ?)
  `,
    [post.text, post.user_id]
  );
  console.log(createPost);
  return createPost;
};


【问题讨论】:

  • 数据库插入函数\动作不一定返回插入的值,它可能返回成功\失败指示符或什么都不返回。
  • 如何检查失败?
  • 我对 sqlite 不是特别熟悉,但快速谷歌搜索建议this。希望对你有帮助
  • 您好,插入有效,但是您认为我应该返回什么。应该是[post.text,post.user_id]
  • 我得到了这个工作!我刚回post

标签: javascript node.js sqlite graphql apollo


【解决方案1】:

根据sqlite docs(链接在上面的评论中),在查询中添加RETURNING 子句,如下所示:

const createPost = await query(
    `
    INSERT INTO posts (text, user_id)
    VALUES (?, ?)
  `,
    [post.text, post.user_id]
    RETURNING *
  );

将从数据库中返回新插入的值,因此,它将成为createPost的值。

【讨论】:

  • 这对我不起作用,我跟着它然后它说, 预期,但添加后我得到expression expected 错误
  • 如上所述,我对sqlite\graphql并不是特别熟悉。这是从文档中获取的建议,它显示了返回插入文档的概念,您必须四处搜索执行此操作的确切方式和语法,并且也欢迎编辑答案.
  • 我认为我的 sqlite 版本不支持RETURNING 是否有其他方法可以做到这一点?
猜你喜欢
  • 1970-01-01
  • 2020-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多