【问题标题】:Flutter Sembast insert or updateFlutter Sembast 插入或更新
【发布时间】:2020-01-03 12:52:49
【问题描述】:

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

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?

sembast

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    您应该使用Record.put 来添加或更新具有给定 ID 的记录。

    Future updateOrInsert(User user) async {
      await _userStore.record(user.id).put(_db, user.toMap());
    }
    

    【讨论】:

    • 当我使用.add 时,我正在使用相当复杂的解决方案来解决这个确切的问题,但我发现使用.put 会大大简化它。使用.addvs .put 有什么区别?谢谢
    • .put 将在记录不存在时创建该记录。如果记录已存在,.add 将失败
    • 确定.. 是 NoSql.. 与 firebase 中的相同。谢谢
    • put 是否替换了整个现有记录?
    • record(int key) 需要一个整数,而我所有模型的 ID 都是简单的字符串,这意味着我应该搜索它们并检查它们是否不存在以添加它们,我可以' t 将我所有的模型 ID 转换为整数!我错过了什么吗?
    猜你喜欢
    • 2020-02-10
    • 2019-09-29
    • 2020-08-29
    • 2020-11-08
    • 2020-01-28
    • 2019-11-20
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    相关资源
    最近更新 更多