Javascript 创建JSON文件并在数据库中加载

Javascript 创建JSON文件并在数据库中加载,javascript,react-native,Javascript,React Native,我有个问题。我使用react native创建了一个应用程序,该应用程序使用蓝牙与外部设备通信。 当应用程序与两个外部设备连接时,我会从这些设备恢复数据流。我的问题是我应该创建一个json文件并加载到数据库中。我该怎么办 我恢复此类数据: 设备左侧: {“Time:+this.state.Time} {“Acc:+this.state.Acc.join(“”)} {“Gyr:+this.state.Gyr.join(“”)} {“Mg:+this.state.Mg.join(“”)} {“压力

我有个问题。我使用react native创建了一个应用程序,该应用程序使用蓝牙与外部设备通信。 当应用程序与两个外部设备连接时,我会从这些设备恢复数据流。我的问题是我应该创建一个json文件并加载到数据库中。我该怎么办

我恢复此类数据:


设备左侧:
{“Time:+this.state.Time}
{“Acc:+this.state.Acc.join(“”)}
{“Gyr:+this.state.Gyr.join(“”)}
{“Mg:+this.state.Mg.join(“”)}
{“压力:+压力}
---- 
{“消息:+this.state.info}
-----------
设备权限:
{“Time:+this.state.Time}
{“Acc:+this.state.Acc_dx.join(“”)}
{“Gyr:+this.state.Gyr_dx.join(“”)}
{“Mg:+this.state.Mg_dx.join(“”)}
{“压力:+压力}
---- 
{“消息:+this.state.info}
-----------

所以我有一个来自这两个设备的连续数据流。当我点击停止按钮时,我应该以db的形式加载数据

如果不需要查询数据,那么只需使用异步存储即可

请参阅下面的代码

第一个片段

这是一个基本模块,它导出两种方法,一种用于保存数据,另一种用于加载数据。使用此模块保存的数据将被持久化,即写入磁盘

请注意,保存的所有数据都通过JSON.stringify传递,然后在返回时进行解析。这有助于保存非基本类型,例如对象

import AsyncStorage from '@react-native-community/async-storage';

/*
* @function saveDeviceData This will write the data to disk, with a given key, this * could be written to a SQLite DB file, a flat file, AsyncStorage is an abstract 
* wrapper around this. 
* @param key {String} Key identifier
* @param data {any} Data to save for the given key
*/
export const saveDeviceData = async (key, data) => {
    try {

        await AsyncStorage.setItem(key, JSON.stringify(data));
    } catch (e) {
      console.log(`Error saving data for key ${key}`, data);
      throw e;
    }
};


/*
* @param key {String} Key identifier for data to load
*/
export const loadDeviceData = async (key) => {
    try {

        return JSON.parse(await AsyncStorage.getItem(key);
    } catch (e) {
      console.log(`Error loading data for key ${key}`);
      throw e;
    }
};
第二段代码

这是一个组件的基本示例,它有两种方法,一种用于加载数据,另一种用于保存数据。组件渲染2个按钮,这些按钮绑定到这2个方法

import React, {Component} from "react";
import {saveDeviceData, loadDeviceData} from "./the-module-example-above";

class App extends Component {

    loadData = async () => {
        let data;
        try {
             data = await loadDeviceData("foo"); // example, this would return undefined
        } catch (e) {}

        console.log(data);
    };

    saveData = async () => {

        // This represents your data, this is just a placeholder example.
        const someJSON = [
             { field: 1},
             { field: 2},
             { field: 3}
            // Etc...
        ];

        try {
            await saveDeviceData("foo", someJSON);
        } catch (e) {}
    };

    render () {

        return (
            <>
                <Button onPress={this.saveData} title="Save data"/>
                <Button onPress={this.loadData} title="Load data"/>     
            </>
        );
    }
}
import React,{Component}来自“React”;
从“/上面的模块示例”导入{saveDeviceData,loadDeviceData}”;
类应用程序扩展组件{
loadData=async()=>{
让数据;
试一试{
data=await loadDeviceData(“foo”);//例如,这将返回未定义的
}捕获(e){}
控制台日志(数据);
};
saveData=async()=>{
//这表示您的数据,这只是一个占位符示例。
常量someJSON=[
{字段:1},
{字段:2},
{字段:3}
//等等。。。
];
试一试{
等待saveDeviceData(“foo”,someJSON);
}捕获(e){}
};
渲染(){
返回(
);
}
}
如果在项目中设置此代码,并在代码段2中呈现组件,请单击按钮并观察调试环境提供的任何控制台

如果您需要查询数据,那么在我看来,您最好使用SQLite,您可以使用另一个库,例如

最后,如果您的意思是需要将该数据存储在远程数据库中,例如,托管在您自己的服务器上/使用您选择的云提供商,那么您需要考虑发出http POST/PUT请求,将该数据发布到处理该数据的API。如果这是你的问题,那就太不清楚了。如果是,请查看使用fetch(参见下面的链接)将数据发送到API

免责声明:以上代码未经测试


祝你好运

如果不需要查询数据,那么只需使用异步存储即可

请参阅下面的代码

第一个片段

这是一个基本模块,它导出两种方法,一种用于保存数据,另一种用于加载数据。使用此模块保存的数据将被持久化,即写入磁盘

请注意,保存的所有数据都通过JSON.stringify传递,然后在返回时进行解析。这有助于保存非基本类型,例如对象

import AsyncStorage from '@react-native-community/async-storage';

/*
* @function saveDeviceData This will write the data to disk, with a given key, this * could be written to a SQLite DB file, a flat file, AsyncStorage is an abstract 
* wrapper around this. 
* @param key {String} Key identifier
* @param data {any} Data to save for the given key
*/
export const saveDeviceData = async (key, data) => {
    try {

        await AsyncStorage.setItem(key, JSON.stringify(data));
    } catch (e) {
      console.log(`Error saving data for key ${key}`, data);
      throw e;
    }
};


/*
* @param key {String} Key identifier for data to load
*/
export const loadDeviceData = async (key) => {
    try {

        return JSON.parse(await AsyncStorage.getItem(key);
    } catch (e) {
      console.log(`Error loading data for key ${key}`);
      throw e;
    }
};
第二段代码

这是一个组件的基本示例,它有两种方法,一种用于加载数据,另一种用于保存数据。组件渲染2个按钮,这些按钮绑定到这2个方法

import React, {Component} from "react";
import {saveDeviceData, loadDeviceData} from "./the-module-example-above";

class App extends Component {

    loadData = async () => {
        let data;
        try {
             data = await loadDeviceData("foo"); // example, this would return undefined
        } catch (e) {}

        console.log(data);
    };

    saveData = async () => {

        // This represents your data, this is just a placeholder example.
        const someJSON = [
             { field: 1},
             { field: 2},
             { field: 3}
            // Etc...
        ];

        try {
            await saveDeviceData("foo", someJSON);
        } catch (e) {}
    };

    render () {

        return (
            <>
                <Button onPress={this.saveData} title="Save data"/>
                <Button onPress={this.loadData} title="Load data"/>     
            </>
        );
    }
}
import React,{Component}来自“React”;
从“/上面的模块示例”导入{saveDeviceData,loadDeviceData}”;
类应用程序扩展组件{
loadData=async()=>{
让数据;
试一试{
data=await loadDeviceData(“foo”);//例如,这将返回未定义的
}捕获(e){}
控制台日志(数据);
};
saveData=async()=>{
//这表示您的数据,这只是一个占位符示例。
常量someJSON=[
{字段:1},
{字段:2},
{字段:3}
//等等。。。
];
试一试{
等待saveDeviceData(“foo”,someJSON);
}捕获(e){}
};
渲染(){
返回(
);
}
}
如果在项目中设置此代码,并在代码段2中呈现组件,请单击按钮并观察调试环境提供的任何控制台

如果您需要查询数据,那么在我看来,您最好使用SQLite,您可以使用另一个库,例如

最后,如果您的意思是需要将该数据存储在远程数据库中,例如,托管在您自己的服务器上/使用您选择的云提供商,那么您需要考虑发出http POST/PUT请求,将该数据发布到处理该数据的API。如果这是你的问题,那就太不清楚了。如果是,请查看使用fetch(参见下面的链接)将数据发送到API

免责声明:以上代码未经测试

祝你好运