Flutter Sembast 插入或更新

Kri*_* CN 3 dart flutter

如果没有带有 id else 的记录sembast在 flutter 中使用库更新,如何实现插入?我尝试了以下。

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());
 }
Run Code Online (Sandbox Code Playgroud)

它工作正常。这是正确的解决方案还是有其他直接的 sembast API 可用?

塞巴斯特

ale*_*xtk 8

您应该使用Record.put给定的 id 添加或更新记录。

Future updateOrInsert(User user) async {
  await _userStore.record(user.id).put(_db, user.toMap());
}
Run Code Online (Sandbox Code Playgroud)