我是GraphQL的新手。我已经有了一个添加数据的模式和变异,但是我有点纠结于如何进行更新变异来更新数据库中的现有数据。
我想我知道我可能需要做些什么来实现这一点,但我会感谢一些关于我的想法是否是正确的方法的指示。
这是我的模式,其中包含我的突变GraphQLObject。
const graphql = require("graphql");
const _ = require("lodash");
const Student = require("../models/students");
const Class = require("../models/classes");
const classes = require("../models/classes");
const {
GraphQLObjectType,
GraphQLString,
GraphQLSchema,
GraphQLID,
GraphQLInt,
GraphQLList,
GraphQLNonNull,
} = graphql;
const Mutation = new GraphQLObjectType({
name: "Mutation",
fields: {
addStudent: {
type: StudentType,
args: {
name: { type: new GraphQLNonNull(GraphQLString) },
age: { type: new GraphQLNonNull(GraphQLString) },
test1: { type: new GraphQLNonNull(GraphQLString) },
classId: { type: new GraphQLNonNull(GraphQLID) },
},
resolve(parent, args) {
let student = new Student({
name: args.name,
age: args.age,
test1: args.test1,
classId: args.classId,
});
console.log(student);
return student.save();
},
},
addClass: {
type: ClassType,
args: {
name: { type: new GraphQLNonNull(GraphQLString) },
year: { type: new GraphQLNonNull(GraphQLString) },
},
resolve(parent, args) {
let newclass = new Class({
name: args.name,
year: args.year,
});
return newclass.save();
},
},
editStudent: {
type: StudentType,
args: {
id: { type: new GraphQLNonNull(GraphQLID)},
name: { type: GraphQLString },
age: { type: GraphQLString },
test1: { type: GraphQLString },
classId: { type: GraphQLID },
},
resolve(parent, args) {
//logic that finds the relevant data object by id, then updates that object//
}
}
}
},
});
module.exports = new GraphQLSchema({
query: RootQuery,
mutation: Mutation,
});
我是否正确地说,在解析函数中,我需要首先通过id在数据库中找到相关对象,然后返回任何arg已更新/更改的args?我不知道如何在MongoDB上通过id查找对象。
任何建议都将非常感谢。
找到了我要找的东西。
editStudent: {
type: StudentType,
args: {
id: { type: new GraphQLNonNull(GraphQLID)},
name: { type: GraphQLString },
age: { type: GraphQLString },
test1: { type: GraphQLString },
classId: { type: GraphQLID },
},
resolve(parent, args) {
return Student.findOneAndUpdate({_id: args.id}, { test1: args.test1, name: args.name}, { new: true})
}
问题内容: 我试图: 根据搜索条件查找文档, 如果找到,请更新一些属性 如果没有插入带有某些属性的文档。 我正在使用,因为我也在执行单个插入操作。我想在一次操作中完成所有操作。 但是,它什么都不会导致为更新/向上插入操作插入任何内容。 这是插入文档: 这是最新资料: 这就是我试图更新/更新的方式: 为什么不更新/更新呢? 注意 那是使用水线ORM的JS代码,它也使用mongodb本机驱动程序。 问
所以我不知道这是否真的描述了我的问题,但这是我能得到的最接近的吗? 我正在使用AWSAppsyncClient进行一些GraphQL突变。由于模型的性质,在更大程度上,由于我缺乏经验,我需要创建一个记录,然后创建两个依赖于第一个的记录,然后才能将它们链接到数据库中。 目前,我正在进行第一次变异,它返回所创建记录的ID。然后在查询返回的promise中创建中间记录。它基本上看起来像: 问题是Prom
我想用Django更新一个表-类似这样的原始SQL: 我的第一个结果是这样的——但这很恶心,不是吗? 有没有更优雅的方式?
问题内容: 我正在使用Cloud Firestore,并且有一系列文档。对于集合中的每个文档,我想更新一个字段。 使用事务执行更新将效率低下,因为在更新数据时不需要读取任何数据。 批处理更新似乎是正确的方向,但是文档中没有包含一次更新多个文档的示例。参见此处:批量写入 问题答案: 如果您使用过Firebase数据库,则不可能原子地完全写入单个单独的位置,这就是为什么您必须使用批量写入的原因,这意味
我已经成功地使用突变创建了数据,但当我更新该数据时,我收到了这个错误 变量“输入”已强制非Null类型“Int! 下面是我的查询模式 这是更新查询 下面是调用API的代码。 在中,我将更新查询发送到我放置数据的位置
问题内容: 如何更新子查询中也存在的表?我必须分两个阶段进行吗?(创建一个临时表-将选定的数据放入其中,然后更新最终表) 我正在尝试使用每个CTN的网络标签更新invoiceLine表。 最终结果将是: invoiceLine 我有以下表格: invoiceLine ctn network 1234 null 2345 null 3456 null terminal ctn network 123