将数据从MatLab写入FireBase数据库

k75qkfdt  于 2022-11-15  发布在  Matlab
关注(0)|答案(2)|浏览(149)

我正在使用MatLab将数据从MatLab写到Firebase。为此,我使用了以下几行代码:

thingSpeakURL = 'https://hybrid-cabinet-265907.firebaseio.com/Ship A/Time Stamp.json';
lat = num2str(42);
lon = num2str(42);
data = struct('lat',lat,'lon',lon);
webwrite(thingSpeakURL,data)

数据已成功写入Firebase。它使我的原始JSON数据成为运行时生成的随机字符串的子级。例如,我的JSON字符串是{lat:‘40’,lon:‘40’},但是它创建了一个随机字符串,比方说,“Mxkllslsll-1112”,将该随机字符串作为父字符串,并将类似于{“Mxkllslsll-1112”:lat:‘40’,lon:‘40’}的内容写入Firebase数据库。
请看下图。它表明,对于船舶A,我已经从MatLab中写入了数据,但它没有正确写入(我面临着我上面讨论的问题)。我想让它有点像为船B.

编写的数据
我想写入数据,而不将任何随机字符串作为父级。在那件事上请帮助我。

fzwojiic

fzwojiic1#

这是因为webwrite默认使用HTTP POST方法。
如Firebase Realtime数据库REST API文档所示,如果您执行POST,您将推送数据,因此每次将新的子项添加到指定的Firebase引用(我们可以在您的问题中看到的-MDJVMk.....值)时,会自动生成唯一的密钥。
您需要使用PUT方法。
我不知道matlab,但快速查看documentation就会发现,您需要在weboptions对象中使用带有put值的RequestMethod选项。

iibxawm4

iibxawm42#

以上这些将我推向了正确的方向(谢谢!),我在以下几个方面取得了成功。

**注意:**以下内容将覆盖您数据库中的所有内容!

url = 'https://***.firebaseio.com/.json';

data.users(1) = struct('first','John','last','Locke'); 
data.users(2) = struct('first','Thomas','last','Hobbes'); 
data.users(3) = struct('first','Rene','last','Descartes');

headers = {'Content-Type' 'application/json'; 'Accept' 'application/json'}; 
options = weboptions('RequestMethod', 'put', 'HeaderFields', headers, 'ArrayFormat', 'json'); 
response = webwrite(url, data, options);

如果您的数据存储在.json文件中(即,您不想在MatLab中手动创建结构),则可以使用“fileread”读取它,并将数据作为字符串(而不是结构)传递。

相关问题