【发布时间】:2021-12-08 18:57:28
【问题描述】:
当用户停止观看来自 React 客户端的更改流时,我想删除集合中的所有用户插入。为此,我正在使用 Realm Web SDK。
这是我的代码的摘要以及我想要在其末尾执行的操作:
import * as Realm from "realm-web";
const realmApp: Realm.App = new Realm.App({ id: realmAppId });
const credentials = Realm.Credentials.anonymous();
const user: Realm.User = await realmApp.logIn(credentials);
const mongodb = realmApp?.currentUser?.mongoClient("mongodb-atlas");
const users = mongodb?.db("users").collection("users");
const changeStream = users.watch();
for await (const change of changeStream) {
switch (change.operationType) {
case "insert": {
...
break;
}
case ...
}
}
// This pseudo-code shows what I want to do
changeStream.on("close", () => // delete all user's inserts)
changeStream.on("timeout", () => // delete all user's inserts)
changeStream.on("user closes app thus also closing stream", () => ... )
Realm Web SDK 模式似乎与NodeJS ones 有很大不同,并且似乎不包括关闭流或在关闭时运行回调的方法。无论如何,它们不适合我的用例。
这些 MongoDB Realm Web docs 导致更多关于 Realm 的 docs。除非我错过了它,否则两组都不会讨论如何监视从 Realm Web SDK 实例化的更改流观察器的关闭和超时,以及当它发生时如何做某事。
我认为另一种方法是在 Realm 的触发器中。但从他们的docs 看来不太可能。
这甚至可以从前端客户端完成吗?有没有办法以“无服务器”的方式在 MongoDB 本身上执行此操作?
【问题讨论】:
-
出于好奇 - 您能否分享一些有关该用例的更多细节?
-
@oblivion02 我正在收集用户的 GPS 坐标,以便向他们发送附近其他人的不重要数据。但我不需要保留任何内容,因此我想在他们关闭连接时将其删除。