我正在尝试使用 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)")
}
}
}
}
但是我收到了上面的错误。这个过程失败的原因是什么?
谢谢
答案 0 :(得分:0)
数小时后我找到了答案,它正在寻找模式关系名称,在这种情况下,我将其命名为钱包,哦,男孩...无论如何,这是万一有人遇到相同问题的解决方案:
let newWallet = Wallet(address: "0xewefwef32", user: newUser.wallet)
注意最后的 newUser.wallet。这是棘手的部分:)