可以使用 FQL 来实现,但我找不到任何在 FaunaDB 中创建新文档的 GraphQL 突变示例,其中 _id 由应用程序定义,而不是由 FaunaDB 本身定义。
当然,我可以将我的应用程序生成的 ID(例如 uuidv4)添加为文档中的附加属性并为其创建索引,但考虑到文档无论如何都会有另一个主键,这似乎不正确。
可以使用 FQL 来实现,但我找不到任何在 FaunaDB 中创建新文档的 GraphQL 突变示例,其中 _id 由应用程序定义,而不是由 FaunaDB 本身定义。
当然,我可以将我的应用程序生成的 ID(例如 uuidv4)添加为文档中的附加属性并为其创建索引,但考虑到文档无论如何都会有另一个主键,这似乎不正确。
您可以使用解析器指令,与用户定义函数 (UDF) 关联以接受_id
作为参数,然后使用Create
.
这是一个例子,
架构文件
type Order {
customerName: String!
price: Float!
}
input OrderInput {
orderID: Int!
customerName: String!
price: Float!
}
type Query {
CreateOrder(data: OrderInput!): Order! @resolver
}
UDF(创建订单)
Update(
Function("CreateOrder"),
{
body: Query(Lambda(["orderdata"],
Create(Ref(Collection("Order"), Select(["orderID"],Var("orderdata"))),
{
data: {
customerName: Select(["customerName"], Var("orderdata")),
price: Select(["price"], Var("orderdata"))
}
}
)))})