Amazon dynamodb 如何同步Amplify数据存储和DynamoDB之间的一对多关系?
我正在开发一个包含两种型号的杂货清单应用程序:产品和杂货清单。一张购物清单有许多产品,而一个产品属于一张购物清单Amazon dynamodb 如何同步Amplify数据存储和DynamoDB之间的一对多关系?,amazon-dynamodb,synchronization,offline,aws-amplify,datastore,Amazon Dynamodb,Synchronization,Offline,Aws Amplify,Datastore,我正在开发一个包含两种型号的杂货清单应用程序:产品和杂货清单。一张购物清单有许多产品,而一个产品属于一张购物清单 #schema.graphql 类型产品@型号 { id:id! groceryList:groceryList@connection(名称:“GroceryListProducts”) 名字:字符串! } 类型GroceryList@model{ id:id! 名字:字符串! 产品:[Product]@connection(名称:“GroceryListProducts”) }
#schema.graphql
类型产品@型号
{
id:id!
groceryList:groceryList@connection(名称:“GroceryListProducts”)
名字:字符串!
}
类型GroceryList@model{
id:id!
名字:字符串!
产品:[Product]@connection(名称:“GroceryListProducts”)
}
在DynamoDB上,据我所知,一对多关系可以使用全局二级索引进行查询,不会直接显示在DynamoDB记录上:
DynamoDB杂货店列表表:
╔═══════╦═════════╗
║ Id ║ Name ║
╠═══════╬═════════╣
║ L1 ║ List1 ║
║ L2 ║ List2 ║
║ L3 ║ List3 ║
╚═══════╩═════════╝
╔═════════╦═══════╦════════╗
║ Id ║ Name ║ PID* ║
╠═════════╬═══════╬════════╣
║ O1 ║ Orange║ L1 ║
║ O2 ║ Apple ║ L1 ║
║ O3 ║ Bacon ║ L2 ║
╚═════════╩═══════╩════════╝
DynamoDB产品列表表:
╔═══════╦═════════╗
║ Id ║ Name ║
╠═══════╬═════════╣
║ L1 ║ List1 ║
║ L2 ║ List2 ║
║ L3 ║ List3 ║
╚═══════╩═════════╝
╔═════════╦═══════╦════════╗
║ Id ║ Name ║ PID* ║
╠═════════╬═══════╬════════╣
║ O1 ║ Orange║ L1 ║
║ O2 ║ Apple ║ L1 ║
║ O3 ║ Bacon ║ L2 ║
╚═════════╩═══════╩════════╝
*商品杂货店
当我添加产品并将其保存在数据存储中时,如下所示:
const productSaved=wait DataStore.save(
新产品(产品)
)
等待DataStore.save(
GroceryList.copyOf(当前列表,已更新=>{
updated.products=[…updated.products,productSaved]
}))
数据存储上的GroceryList实例将正确显示产品子项:
//浏览器DevTools、选项卡应用程序、IndexDB、放大数据存储上显示的GroceryList项:
{
id:“L1”
名称:“列表1”
产品:[
{id:“01”,杂货店列表:{…},名称:“橙色”},
{id:“02”,杂货店列表:{…},名称:“苹果”}
]
}
但是,如果我添加与云的同步:
const subscription=DataStore.observe(Product.subscription)(msg=>{
log(msg.model、msg.opType、msg.element);
})
子项将从GroceryList数据存储实例中消失。
我怎样才能防止它发生
我想确保我可以在线和离线使用我的应用程序
提前感谢您的帮助