显示 ReSubScription 的终端:{} 在 parse_server_sdk_flutter 中使用 LiveQuery 时
Terminal showing ReSubScription:{} when using LiveQuery in parse_server_sdk_flutter
我遵循了 documentation 中的所有步骤,但从未调用此函数:
subscription.on(LiveQueryEvent.create,
(value) {});
我在终端中收到的是:“ReSubScription:{}”。
当数据库中我的 class 之一获得新的 record/entry 时,我正在尝试捕获事件。
如果需要,我可以安排一个演示代码库,但请帮助我解决这个问题。
PS:我在有状态小部件的 initState() 方法中调用此 subscription.on() 方法,而不是在 main() 中。
更新
我正在分享一个最小应用程序的 link 的 git 回购来演示我做了什么。这是 link
请看看我对 livequery 做错了什么。将不胜感激 pointers/guidance.
第二次更新
请注意,我已经硬编码了 adminId(管理员登录的 objectId)。请检查 TODO。
我的测试程序:
- 使用 Parse Dashboard 从后端数据库手动创建用户。请保持用户名 = 电子邮件。
- 打开应用程序。单击管理按钮。转到 AdminLogin 页面并输入您的电子邮件和密码。
- 如果成功,应用程序将导航到下一个白屏。这确认身份验证已成功完成。
- 再次打开应用程序。单击用户按钮。转到用户窗体。
- 输入姓名并点击订阅者按钮。这将在数据库中创建一个名为“Subscribers”的新 class 并添加列“adminId”和“name”
(请在代码中硬编码 adminId 因为你已经知道了)
- 现在再次打开应用程序并转到管理并再次登录以移动到控制面板(白屏)。
- 等待 back4app 发送 trigger/callback。 (显示重新订阅:{})。
问题与以下代码有关:
final ParseObject object = ParseObject('Subscribers');
final response = await object.create();
if (response.success && response.count > 0) {
final ParseObject record = response.results[0];
record.set('name', name);
record.set('adminId', adminId);
await record.save();
}
请注意,首先您创建的对象没有 adminId
,这就是您的事件未被触发的原因。然后设置 adminId
并更新对象。在那一刻,您的输入事件应该被触发。请收听所有不同的事件(创建、输入、更新、离开、删除),您会看到它正在发生。
我遵循了 documentation 中的所有步骤,但从未调用此函数:
subscription.on(LiveQueryEvent.create,
(value) {});
我在终端中收到的是:“ReSubScription:{}”。
当数据库中我的 class 之一获得新的 record/entry 时,我正在尝试捕获事件。
如果需要,我可以安排一个演示代码库,但请帮助我解决这个问题。
PS:我在有状态小部件的 initState() 方法中调用此 subscription.on() 方法,而不是在 main() 中。
更新
我正在分享一个最小应用程序的 link 的 git 回购来演示我做了什么。这是 link
请看看我对 livequery 做错了什么。将不胜感激 pointers/guidance.
第二次更新
请注意,我已经硬编码了 adminId(管理员登录的 objectId)。请检查 TODO。
我的测试程序:
- 使用 Parse Dashboard 从后端数据库手动创建用户。请保持用户名 = 电子邮件。
- 打开应用程序。单击管理按钮。转到 AdminLogin 页面并输入您的电子邮件和密码。
- 如果成功,应用程序将导航到下一个白屏。这确认身份验证已成功完成。
- 再次打开应用程序。单击用户按钮。转到用户窗体。
- 输入姓名并点击订阅者按钮。这将在数据库中创建一个名为“Subscribers”的新 class 并添加列“adminId”和“name” (请在代码中硬编码 adminId 因为你已经知道了)
- 现在再次打开应用程序并转到管理并再次登录以移动到控制面板(白屏)。
- 等待 back4app 发送 trigger/callback。 (显示重新订阅:{})。
问题与以下代码有关:
final ParseObject object = ParseObject('Subscribers');
final response = await object.create();
if (response.success && response.count > 0) {
final ParseObject record = response.results[0];
record.set('name', name);
record.set('adminId', adminId);
await record.save();
}
请注意,首先您创建的对象没有 adminId
,这就是您的事件未被触发的原因。然后设置 adminId
并更新对象。在那一刻,您的输入事件应该被触发。请收听所有不同的事件(创建、输入、更新、离开、删除),您会看到它正在发生。