【问题标题】:don't know why my cursorForObjectInConnection returns null?不知道为什么我的 cursorForObjectInConnection 返回 null?
【发布时间】:2018-01-05 22:03:52
【问题描述】:

我在回复时遇到此错误:

不能为不可为空的字段 TodoEdge.cursor 返回 null。

这是我的变异代码:

  mutateAndGetPayload: async ({text}, context) => {
      let newTodo = new TodoModel({ text, _creatorUserId: context.user._id });
      await newTodo.save(); 
      return {newTodo}; 
  },
  outputFields: {
    todoEdge: {
      type: GraphQLTodoEdge,
      resolve: async ({newTodo}, args,context) => {
        const todos = await getTodosByUserContext(context.user._id, 'any');
        console.log("cursorForObjectInConnection = ",cursorForObjectInConnection(todos, newTodo)) // this logs null?
        return {
          cursor: cursorForObjectInConnection(todos, newTodo),
          node: newTodo,
        };
      },
    },

tod​​os 和 newTodo 是从 mongoose 数据库中检索的。我想我正在正确地关注这个相关的todo-modern sample。帮助?

【问题讨论】:

    标签: graphql relayjs graphql-js relaymodern


    【解决方案1】:

    让我们尝试以下操作:

    1) 从您的数据库中获取待办事项,例如

    const todos = await Todo.find({});
    

    您可以根据您的 Todo Schema 获取特定用户的 todo。 Todo.find({ userid: context.user._id});

    2) 一旦你得到你的待办事项然后得到光标:

    const cursor = offsetToCursor(todos.length);
    

    这对我有用。试试看吧。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-23
      • 2015-06-01
      相关资源
      最近更新 更多