我想对 mongo 集合进行查询,当集合更改时,我想再次运行查询。但是为了优化它,我不想在每次集合更改时运行查询,只有在匹配查询的文档发生更改时才运行查询。我有以下代码:
const query = { author: someUserID };
const fetch = async () => await collection.find(query).toArray();
const watcher = collection
.watch([{ $match: { fullDocument: query } }])
.on("change", () => fetch().then(sendData)); // This does not work
fetch().then(sendData); // This works
在第一次运行时,它会获取文档并执行sendData
,但是当插入新文档时,不会触发该事件。当我在collection.watch()
没有争论的情况下获胜时,它会起作用。
问题出在哪里?谢谢。
编辑:我希望能够重用query
for.find()
和 for .watch()
。