我通过命令创建了一个 GraphQL apiamplify api add
并添加了下面的模式。我正在使用 cognito 进行身份验证。
type User @model
@auth(rules: [{ allow: owner }]) {
id: ID!
videos: [Video!] @connection(keyName: "videosByUser", fields: ["id"])
adverts: [Advert] @connection(keyName:"advertsByUser", fields: ["id"])
}
type Video @model
@key(name: "videosByUser", fields: ["userId"])
@auth(rules: [{ allow: owner, operations: [create, update, delete] }]) {
id: ID!
title: String!
description: String!
size: Float!
length: Float!
hashMarks: [Float!]!
userId: ID!
# bidrectional connection, if needed
# user: User! @connection(fields: ["userId"])
adverts: [VideoAdverts!] @connection(keyName: "advertsByVideo", fields: ["id"])
streamingLink: AWSURL
}
type VideoAdverts @model(queries: null)
@key(name: "advertsByVideo", fields: ["videoId", "advertId"])
@key(name: "videosByAdvert", fields: ["advertId", "videoId"]) {
id: ID!
videoId: ID!
advertId: ID!
video: Video! @connection(fields: ["videoId"])
advert: Advert! @connection(fields: ["advertId"])
}
type Advert @model
@key(name: "advertsByUser", fields: ["userId"])
@auth(rules: [{ allow: owner, operations: [create, update, delete] }]) {
id: ID!
title: String!
description: String!
size: Float!
length: Float!
creatorId: ID!
# bidrectional connection, if needed
# creator: Creator! @connection(fields: ["creatorId"])
videos: [VideoAdverts!] @connection(keyName: "videosByAdvert", fields: ["id"])
blacklist: [AdvertBlacklist!] @connection(keyName: "blacklistByAdvert", fields: ["id"])
startDate: AWSDateTime
endDate: AWSDateTime
}
这是我的第一个放大项目,我无法弄清楚如何实现以下用例:
- 使用 lambda 函数查询数据并返回给客户端。
- 使用 cron 触发的 lambda 函数进行 API 调用并使用突变来更新某些字段。
到目前为止,我在谷歌搜索中发现的所有内容都涉及使用 lambda 与通过amplify storage add
命令添加的数据进行交互。
我在 Stackoverflow 上找到的其他一些示例不使用 cognito 进行身份验证。
看起来我将能够使用 cloudwatch 来触发 lambda,所以我现在的主要问题是如何使用 cognito 进行身份验证,从 lambda 中实际查询和改变 GraphQL api。任何帮助都会非常有帮助,谢谢:)