标签: asyncstorage

RocksDB IO错误锁定:无可用锁定

我正在iOS上使用RocksDB,并且正在使用AsyncStorage适配器以及redux-persist。每当我启动应用程序时,都会出现错误:

Failed to open db at path /Users/chadwilken/Library/Developer/CoreSimulator/Devices/818C47D2-ECF0-4003-865E-1FCAADCEF624/data/Containers/Data/Application/6C4F8F80-52E3-48B1-8ED5-84FB9F087514/Documents/RKAsyncRocksDBStorage.

RocksDB Status: IO error: lock /Users/chadwilken/Library/Developer/CoreSimulator/Devices/818C47D2-ECF0-4003-865E-1FCAADCEF624/data/Containers/Data/Application/6C4F8F80-52E3-48B1-8ED5-84FB9F087514/Documents/RKAsyncRocksDBStorage/LOCK: No locks available.
Run Code Online (Sandbox Code Playgroud)

充当适配器的类是:

// Copyright 2004-present Facebook. All Rights Reserved.

#import "AsyncRocksDBStorage.h"
#include <string>
#import <Foundation/Foundation.h>
#import <RCTConvert.h>
#import <RCTLog.h>
#import <RCTUtils.h>

#include <rocksdb/db.h>
#include <rocksdb/merge_operator.h>
#include <rocksdb/options.h>
#include <rocksdb/slice.h>
#include <rocksdb/status.h>

static NSString *const RKAsyncRocksDBStorageDirectory = @"RKAsyncRocksDBStorage";

namespace {
    rocksdb::Slice SliceFromString(NSString *string)
    {
        return rocksdb::Slice((const char *)[string UTF8String], [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
    }

    void deepMergeInto(NSMutableDictionary *output, NSDictionary *input) {
        for (NSString *key in input) …
Run Code Online (Sandbox Code Playgroud)

ios rocksdb react-native asyncstorage

5
推荐指数
1
解决办法
2745
查看次数

卸载ReactNative App - 使用Asyncstorage清理用户数据

我正在使用Async Storage在我的本机应用程序中存储一些值.我有一个登录,所以当我登录到应用程序时,我正在存储我的ID,当我退出时我正在删除它.

但是当在没有注销的情况下卸载我的应用程序时,异步存储中的数据不会删除,这意味着在再次安装应用程序时会自动登录.

你可以告诉我如何解决这个问题在Android设备和版本> 6

谢谢.

react-native asyncstorage

5
推荐指数
1
解决办法
2992
查看次数

React Native的AsyncStorage可能出现什么故障?

React Native提供了AsyncStorage库作为在RN应用程序中存储持久数据的方法.通常,AsyncStorage使用非常简单,除了一个方面:

两个主要AsyncStorage功能,AsyncStorage.getItemAsyncStorage.setItem返回Promises.这很容易理解:函数执行的实际查询或保存在后台运行,项目的获取或保存可能会失败,需要我们查看catch错误.

但是,似乎在React Native文档中没有任何地方指出了什么,确切地说,是AsyncStorage在调用时setItem或者在调用时应该出现的错误或错误getItem.当然,可以推断出可能存在的一些错误情况:一个可能尝试getItem使用不存在的密钥,或者可能尝试setItem在完整或接近完整的存储中运行,操作系统可能拒绝为您释放更多的磁盘空间应用程序,但没有一个完整的列表是令人沮丧的.

很高兴知道确实AsyncStorage可能会失败,因此正在开发使用数据持久性的React Native应用程序的人可能确切地知道他们需要处理哪些失败案例.

react-native asyncstorage

5
推荐指数
1
解决办法
640
查看次数

AsyncStorage没有返回回调

我正在使用redux-persistReact Native项目,该项目在除Android 7之外的许多设备上都能正常运行。我试图调试为什么我的本地存储不持久的问题,并发现了这一点:

以下代码在React Native组件生命周期内执行

  componentDidMount() {
    attachObservables(store)
    setInterval(async () => {
      console.log('Inside setInterval')
      const data = await AsyncStorage.getAllKeys()
      console.log('inside the getAllKeys')
      data.forEach(async k => {
        const value = await AsyncStorage.getItem(k)
        console.group(k)
        console.log(value)
        console.groupEnd()
      })
    }, 3000)
  }
Run Code Online (Sandbox Code Playgroud)

从不调用“ Inside setInterval”之后的代码。如果在setInterval之外,它将仅运行一次。如果我一次调用setInterval 之外的代码,它似乎可以正常运行。我也尝试过回调格式与异步/等待版本,但这似乎无关紧要。

我在使用firebase js库时遇到了同样的问题(在第一个回调之后永远不会返回回调)。我现在正在寻找替代方法来解决此问题。

有任何想法吗?

react-native asyncstorage react-native-android

5
推荐指数
1
解决办法
1869
查看次数

AsyncStorage与Expo.SQLite

我正在创建和下载,上传,存储许多图像的应用程序。我正在尝试查看如何最好地管理数据以提高性能。

我正在使用Redux来存储我的应用程序的状态,并且我使用redux-persist来将状态存储在AsyncStorage中。

但我也了解到create-react-native-app在expo包中还提供了一个称为SQLite的模块。(https://docs.expo.io/versions/latest/sdk/sqlite.html)。

我试图找出在哪里存储我的数据是一个好主意。

我应该将所有图像(base64编码)存储到redux吗?这可能多达100mb的数据。还是我应该将图像存储到SQLite中(假设数据像sqlite“ .db”文件一样平放)?

sqlite asyncstorage expo create-react-native-app

5
推荐指数
1
解决办法
1143
查看次数

AsyncStorage 是永久性的吗?

我将我的应用程序的身份验证令牌存储在 AsyncStorage 中。似乎在 Android 和 iOS 上(对这个不太确定),在长时间不活动(约 2 周)后,用户都会被注销。 我确信它与服务器无关。

AsyncStorage 是永久性的吗?

编辑:嗯,这很尴尬。问题出在服务器上,并不是 AsyncStorage 的错。

react-native asyncstorage

4
推荐指数
1
解决办法
1074
查看次数

我如何为 AsyncStorage 设置到期日期 - 反应原生

我正在使用 react native async storage 它运行良好,但在某些情况下,我必须为数据设置到期日期并刷新我检查过的存储

AsyncStorage 文档,但没有设置在特定时间后过期的选项。

唯一可用的选项是:-

AsyncStorage.removeItem 
Run Code Online (Sandbox Code Playgroud)

react-native asyncstorage

4
推荐指数
2
解决办法
7490
查看次数

在 Jest 上模拟 react-native-async-storage

我正在测试依赖于 的函数@react-native-community/async-storage,所以显然我的测试必须模拟该库。

所以我在我的内部这样做jestSetupFile.js

import mockAsyncStorage from '@react-native-community/async-storage/jest/async-storage-mock';
jest.mock('@react-native-community/async-storage', () => mockAsyncStorage);
Run Code Online (Sandbox Code Playgroud)

这是来自https://github.com/react-native-community/react-native-async-storage/blob/master/docs/Jest-integration.md 的直接指令

但是,导出的文件有type关键字,我的 JavaScript 环境无法解析:

  ? Test suite failed to run

    /Users/someuser/myprojects/myproject/node_modules/@react-native-community/async-storage/jest/async-storage-mock.js:6
    type KeysType = Array<string>;
         ^^^^^^^^

    SyntaxError: Unexpected identifier
Run Code Online (Sandbox Code Playgroud)

果然,当我检查该async-storage-mock.js路径中的文件时,它包含type关键字,我认为这是导致此问题的根本原因。

我在这里做错了什么?

jestjs react-native asyncstorage

4
推荐指数
1
解决办法
2492
查看次数

如何解决使用 AsyncStorage (deprecated) 警告?使用社区(正确)库

我正在使用 @react-native-community/async-storage 并不断收到此警告:

Warning: Async Storage has been extracted from react-native core and will be removed in a future release. It can now be installed and imported from '@react-native-community/async-storage' instead of 'react-native'. See https://github.com/react-native-community/react-native-async-storage

这是我的 package.json:

{
  "name": "mobile_app",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "@aws-amplify/pushnotification": "^1.0.32",
    "@react-native-community/async-storage": "^1.6.1",
    "aws-amplify": "^1.1.32",
    "aws-amplify-react-native": "^2.1.15",
    "buffer": "^5.3.0",
    "moment": "^2.24.0",
    "react": "16.8.3",
    "react-native": "0.59.9",
    "react-native-ble-plx": "^1.0.3",
    "react-native-calendars": "^1.208.0",
    "react-native-check-box": "^2.1.7",
    "react-native-dialog": "^5.6.0",
    "react-native-gesture-handler": "^1.3.0", …
Run Code Online (Sandbox Code Playgroud)

warnings react-native asyncstorage

4
推荐指数
2
解决办法
8985
查看次数

React Native - 运行 react-native run-android 时出现异步存储错误

我正在尝试运行 react-native run-android 但收到以下错误:

Error: Command failed: gradlew.bat app:installDebug -PreactNativeDevServerPort=8081
D:\Work\CS\Wms-Mobile\CS-WmsMobile\node_modules\@react-native-community\async-storage\android\src\main\java\com\reactnativecommunity\asyncstorage\AsyncStorageModule.java:26: error: package com.facebook.react.module.annotations does not exist
import com.facebook.react.module.annotations.ReactModule;
                                            ^
D:\Work\CS\Wms-Mobile\CS-WmsMobile\node_modules\@react-native-community\async-storage\android\src\main\java\com\reactnativecommunity\asyncstorage\AsyncStorageModule.java:34: error: cannot find symbol     
@ReactModule(name = AsyncStorageModule.NAME)
 ^
  symbol: class ReactModule
2 errors

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':react-native-community_async-storage:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log …
Run Code Online (Sandbox Code Playgroud)

react-native asyncstorage react-native-android

4
推荐指数
1
解决办法
1万
查看次数