当我有更多内容时,发布我所有的图像会减慢我的应用程序吗?
Will a publication of all my images slow down my app when I will have more content?
我目前正在使用 EasySearch 作为我的应用程序的搜索解决方案,我对 pub/sub 的搜索结果有疑问。
基本上,搜索的工作方式是用户将进行搜索并返回一些帖子(我有一个名为 Posts 的 collections,我在其中实现了 EasySearch ).
我假设 EasySearch 可能会根据搜索查询的结果自动发布或订阅,所以我不认为我应该担心向客户端发送太多数据? (如果我错了请更正)。
但是,我现在遇到的问题是每个帖子都与来自 collection 的图像相关联,称为图像,其中我的 pub/sub 只是发布所有内容并订阅所有来自客户端和服务器,与搜索完全无关。
我只是想知道这是否意味着我将无法扩展,因为无论搜索如何,我都会将每张图片发布给客户?
Post collection
Posts = new Mongo.Collection('posts');
Posts.initEasySearch(['firstName', 'lastName', 'degreeStudy', 'tags'], {
'limit' : 20,
'use' : 'mongo-db'
});
Posts.allow({
update: function(userId, post) { return ownsDocument(userId, post); },
remove: function(userId, post) { return ownsDocument(userId, post); },
});
图片collection
Images = new FS.Collection("images", {
stores: [new FS.Store.GridFS("images")]
});
显示搜索结果的模板页面
<template name="postPage">
<div class="container">
{{#ifEsHasNoResults index="posts"}}
<div class="jumbotron no-results"> <h1>No results found!</h1></div>
{{/ifEsHasNoResults}}
{{#ifEsIsSearching index="posts"}}
{{>loading}}
{{else}}
{{#esEach index="posts"}}
{{> postItem}}
{{/esEach}}
{{> esLoadMoreButton index="posts"}}
{{/ifEsIsSearching}}
</div>
</template>
简而言之,如何发布与 easySearch 结果相关的图片 collection?
我认为您将出版物返回的 cursor
与数据本身混淆了。 cursor
就像一种无需加载所有数据即可进行动态查询的方法(除非您使用 {{# each images}}
等方式加载所有数据)。阅读 that for more info
话虽这么说(前面没有缩放问题),我假设在您的 {{> postItem}}
模板中,您有一个 image
帮助程序来获取图像 collection 中的相关图像。
这可行,但请记住:您的用户只需执行 Images.find()
相关命令即可打开他的控制台并在您的 Images
collection 中获取任何图像。所以只要你没有私人内容就应该没问题。但是,如果这样做,您可能希望使用一种方法来获取图像而不是 publishing/exposing 整个 collection.
我目前正在使用 EasySearch 作为我的应用程序的搜索解决方案,我对 pub/sub 的搜索结果有疑问。
基本上,搜索的工作方式是用户将进行搜索并返回一些帖子(我有一个名为 Posts 的 collections,我在其中实现了 EasySearch ).
我假设 EasySearch 可能会根据搜索查询的结果自动发布或订阅,所以我不认为我应该担心向客户端发送太多数据? (如果我错了请更正)。
但是,我现在遇到的问题是每个帖子都与来自 collection 的图像相关联,称为图像,其中我的 pub/sub 只是发布所有内容并订阅所有来自客户端和服务器,与搜索完全无关。
我只是想知道这是否意味着我将无法扩展,因为无论搜索如何,我都会将每张图片发布给客户?
Post collection
Posts = new Mongo.Collection('posts');
Posts.initEasySearch(['firstName', 'lastName', 'degreeStudy', 'tags'], {
'limit' : 20,
'use' : 'mongo-db'
});
Posts.allow({
update: function(userId, post) { return ownsDocument(userId, post); },
remove: function(userId, post) { return ownsDocument(userId, post); },
});
图片collection
Images = new FS.Collection("images", {
stores: [new FS.Store.GridFS("images")]
});
显示搜索结果的模板页面
<template name="postPage">
<div class="container">
{{#ifEsHasNoResults index="posts"}}
<div class="jumbotron no-results"> <h1>No results found!</h1></div>
{{/ifEsHasNoResults}}
{{#ifEsIsSearching index="posts"}}
{{>loading}}
{{else}}
{{#esEach index="posts"}}
{{> postItem}}
{{/esEach}}
{{> esLoadMoreButton index="posts"}}
{{/ifEsIsSearching}}
</div>
</template>
简而言之,如何发布与 easySearch 结果相关的图片 collection?
我认为您将出版物返回的 cursor
与数据本身混淆了。 cursor
就像一种无需加载所有数据即可进行动态查询的方法(除非您使用 {{# each images}}
等方式加载所有数据)。阅读 that for more info
话虽这么说(前面没有缩放问题),我假设在您的 {{> postItem}}
模板中,您有一个 image
帮助程序来获取图像 collection 中的相关图像。
这可行,但请记住:您的用户只需执行 Images.find()
相关命令即可打开他的控制台并在您的 Images
collection 中获取任何图像。所以只要你没有私人内容就应该没问题。但是,如果这样做,您可能希望使用一种方法来获取图像而不是 publishing/exposing 整个 collection.