firebase - get 方法擦除所有节点?
问题描述
我试图在我的 delphi 应用程序中使用FB4D 。
但是每当我尝试使用Get
方法时,它都会删除所有节点并在数据库中写入时间戳。
这是我正在使用的代码:
// Clicking on btnLogin
procedure TForm3.BtnLoginClick(Sender: TObject);
begin
if not Assigned(fConfig) then
fConfig := TFirebaseConfiguration.Create(cApiKey, cId);
fConfig.Auth.SignInWithEmailAndPassword(Edit1.Text, Edit2.Text,
onUserResponse, onError);
end;
//Log In Success
procedure TForm3.onUserResponse(const Info: string; user: IFirebaseUser);
begin
UID := user.UID;
pass := Edit2.Text;
Email := user.Email;
fConfig.RealTimeDB.GetServerVariables(cServerVariableTimeStamp, GetRTDBPath,
onServerStamp, onError);
Text1.Text := UID;
end;
//Getting ServerTime for Usage
procedure TForm3.onServerStamp(const ServerVar: string; Val: TJSONValue);
var
ST: int64;
begin
ST := StrToInt64(Val.Value);
sDate := TTimeZone.Local.ToLocalTime(UnixToDateTime(ST div 1000));
SaveUser;
UpdateLoginStatus;
end;
//Trying to get data to use but is not getting at all
procedure TForm3.UpdateLoginStatus;
begin
fConfig.RealTimeDB.Get(GetRTDBPath, onGetResponse, onError);
end;
//updating LoggedIn Status
procedure TForm3.onGetResponse(ResourceParams: TRequestResourceParam;
Val: TJSONValue);
var
sValue: TJSONObject;
begin
ShowRTNode(ResourceParams, Val);
//Below Will be used later once data is received
{sValue := TJSONObject.Create;
try
sValue.AddPair('LoggedIn', 'True');
fConfig.RealTimeDB.Patch(GetRTDBPath, sValue, ShowRTNode, onError);
finally
sValue.Free;
end;}
end;
无法使用更新数据,因为当我尝试获取数据时,它会删除所有节点,然后在路径中创建时间戳。
为什么这样 ?
解决方案
这是 RealTimeDB.GetServerVariables(cServerVariableTimeStamp, GetRTDBPath..) 的副作用。此函数不只返回时间戳。它还在 ResourceParams 寻址的节点中写入时间戳。请在此处阅读 wiki 中的说明: https ://github.com/SchneiderInfosystems/FB4D/wiki/FB4D-Reference-IRealTimeDB#get-a-server-variable
解决方案是在数据库中使用自定义timestamp
节点,您就可以开始了。
推荐阅读
- c++ - C ++变量内容在2个函数之间丢失[虚幻]
- swift - 如何在 iPad 的 Swift Playgrounds 中创建 UIImageView?
- php - 来自 eval() 的内容未在所需位置呈现
- weblogic - 致命错误 DISPLAY 变量设置不正确::0
- loops - 使用递归而不是循环将 c 代码转换为 haskell 代码(无列表)
- sql-server - 如何选择 id 等于其他 id 的表
- jmeter - 我无法使用 jmeter 生成脚本
- django - 尝试区分“[object Object]”时出错。只有数组和可迭代
- java - Android studio 无此列 SQL 数据库
- http - 在 Go 中使用 http.NewRequest 处理错误