Amplify Schema 抱怨,因为参数类型不是“List<UserWallet>?”

时间:2021-07-09 22:40:04

标签: swift swiftui aws-amplify

我正在尝试使用 DataStore 在本地添加新数据,这是我收到的错误:

Cannot convert value of type 'User' to expected argument type 'List<UserWallet>?'

我定义了以下架构(用户和钱包之间的多对多):

type Wallet @model @auth(rules: [{allow: public}]) {
  id: ID!
  address: String
  users: [UserWallet] @connection(keyName: "byWallet", fields: ["id"])
}

type User @model @auth(rules: [{allow: public}]) {
  id: ID!
  name: String!
  UserWallets: [UserWallet] @connection(keyName: "byUser", fields: ["id"])
}

type UserWallet @model(queries: null) @key(name: "byUser", fields: ["userID", "walletID"]) @key(name: "byWallet", fields: ["walletID", "userID"]) @auth(rules: [{allow: public}, {allow: public}]) {
  id: ID!
  userID: ID!
  walletID: ID!
  user: User! @connection(fields: ["userID"])
  wallet: Wallet! @connection(fields: ["walletID"])
}

我试图在 official docs 后面添加一些数据,所以我尝试了这个:

let newUser = User(name: "Arturo")
let newWallet = Wallet(address: "0xewefwef32", users: newUser)


Amplify.DataStore.save(newUser) { userResult in
    switch userResult {
    case .failure(let error):
        print("Error adding post - \(error.localizedDescription)")
    case .success:
        Amplify.DataStore.save(newWallet) { newWalletResult in
            switch newWalletResult {
            case .success:
                print("User saved!")
            case .failure(let error):
                print("Error adding newWallet - \(error.localizedDescription)")
            }
        }
    }
}

但是我收到了上面的错误。这个过程失败的原因是什么?

谢谢

1 个答案:

答案 0 :(得分:0)

数小时后我找到了答案,它正在寻找模式关系名称,在这种情况下,我将其命名为钱包,哦,男孩...无论如何,这是万一有人遇到相同问题的解决方案:

let newWallet = Wallet(address: "0xewefwef32", user: newUser.wallet)

注意最后的 newUser.wallet。这是棘手的部分:)