Aws放大:部分更新(突变)

时间:2020-07-23 05:50:48

标签: vue.js graphql aws-amplify graphql-js aws-amplify-cli

我有2个(希望是新手)需要社区提出的问题:

(1)我对应用程序的schema.graphql文件进行了更改。如何确保更新相应的query.js,mutations.js,subscriptions.js文件?以前,这些命令是在我运行amplify push命令时用于更新的,但现在它们不再使用。

(2)如何使用aws扩增进行部分突变?例如:如果一个突变具有fullName,城市,我如何在不从前端应用程序传递城市的情况下更新fullName? 我可以在第一个屏幕中编辑全名,然后在第二个屏幕中编辑城市。如果我没有在第一个屏幕的变体中通过城市,它将被覆盖为空。

这是突变的样子:

mutations.js:

const updateUserProfile =
  mutation UpdateUserProfile(
    $input: UpdateUserProfileInput!
    $condition: ModelUserProfileConditionInput
  ) {
    updateUserProfile(input: $input, condition: $condition) {
      id
      fullName
      city
      createdAt
      updatedAt
      owner
    }
  }
;

userprofile.vue

import { Auth } from 'aws-amplify';
import { createUserProfile, updateUserProfile} from '@/graphql/mutations';    
const userProfileInput={
              id:userId, 
              fullName:'Ajit Goel',  
            };
await API.graphql(graphqlOperation(updateUserProfile, {input: userProfileInput}));

schema.graphql:

 type UserProfile @model 
    @key(fields:["id"])
    @auth(rules: [{allow: owner}])
    {
        id: String!
      fullName: String
      city:String
  }

运行更新突变时控制台中的错误:

enter image description here

1 个答案:

答案 0 :(得分:1)

让我尝试帮助您

  1. 放大推送完成后,您应该能够看到更改。只需确保保存文件更改,然后再尝试。

  2. 取决于您的架构城市,可以将其设置为带有感叹号的必填项。在这种情况下,您可以删除感叹号或将城市设置为空字符串。如果以后需要进行特定操作,则可以在解析器中添加此检查。