英文:
Flutter Sembast insert or update
问题
如何在Flutter中使用sembast
库实现如果没有记录则插入,否则更新记录?
我尝试了以下代码:
Future updateOrInsert(User user) async {
final result = await update(user);
if(result == 0){
insert(user);
}
}
Future update(User user) async {
final finder = Finder(filter: Filter.byKey(user.id));
final result = await _userStore.update(await _db, user.toMap(), finder: finder);
return result;
}
Future insert(User user) async {
await _userStore.add(await _db, user.toMap());
}
它正常工作。这是正确的解决方案吗,还是还有其他直接的sembast
API可用?
英文:
How to implement insert if no records with the id else update with sembast
library in flutter?
I tried the below.
Future updateOrInsert(User user) async {
final result = await update(user);
if(result == 0){
insert(user);
}
}
Future update(User user) async {
final finder = Finder(filter: Filter.byKey(user.id));
final result = await _userStore.update(await _db, user.toMap(), finder: finder);
return result;
}
Future insert(User user) async {
await _userStore.add(await _db, user.toMap());
}
It's working fine. Is this the right solution or is there any other direct sembast APIs available?
答案1
得分: 8
你应该使用 Record.put
来添加或更新具有给定 ID 的记录。
Future updateOrInsert(User user) async {
await _userStore.record(user.id).put(_db, user.toMap());
}
英文:
You should use Record.put
to either add or update a record with a given id.
Future updateOrInsert(User user) async {
await _userStore.record(user.id).put(_db, user.toMap());
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论