javascript - 是否应该发布 MongoDB 插入/更新/更新/删除?

标签 javascript mongodb meteor

截至目前,我在\server\publications.js 中有我的 MongoDB“选择”,例如:

Meteor.publish("jobLocations", function () {
  return JobLocations.find();
});

...并且正在订阅\client\main.js 中的内容,例如:

Meteor.startup(function() {
  Meteor.subscribe("jobLocations");
 . . .

...但是我在\both\methods.js 中有我的插入/更新/更新/删除,像这样:

Meteor.methods({
    'insertJobLocation': function(username, jobLoc, placename, st8OrProvince, postalcode, xcoord, ycoord) {
        JobLocations.insert({
            jl_jobloc: jobLoc,
    . . .

...我从\client\templates\whatever.js 调用它们,像这样:

'submit form': function(event, template) {
    . . .      
    Meteor.call('insertJobLocation', jobloc, placename, st8OrProvince, 
        postalcode, xcoord, ycoord, function(err) {
        . . .

这行得通,但它是错误的[-headed]吗?

所有 MongoDB 代码是否应该发布/订阅(IOW,位于\server\publications.js 和\client\main.js?

最佳答案

根据我的阅读,经验法则是订阅您需要在客户端浏览器上显示的内容。
这将返回 JobLocations 集合中的所有项目/字段,因此如果此集合很大,您可能希望限制使用 queryfield 发布的内容> 参数:

之前:

Meteor.publish("jobLocations", function () {
  return JobLocations.find();
});

一旦获得大量数据(或想隐藏敏感数据!):

Meteor.publish("jobLocations", function (jobLocParam) {
  var selector = {
    jobLoc: {$in: jobLocParam},
  }
  var options = {
    sort: {placename: 1},
    fields: {jobLoc: 1, placename: 1},
    limit: 20
  }
  return JobLocations.find(selector, options);
});

所有这些字段都是可选的,但我想我会给你几个例子。 selector 可以只是 {} 如果您想要返回所有内容,并且您可以使用 fields 参数限制发布的字段(也是可选的) .发布也可以采用参数,因此如果您愿意,可以在创建模板时通过发布传递 jobLoc 或它们的数组。

希望对您有所帮助!

关于javascript - 是否应该发布 MongoDB 插入/更新/更新/删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32869591/

相关文章:

javascript - Meteor:配置特定于用户类型的路由的约定

javascript - Reactive Meteor Templates and Deps Dependency——当另一个模板改变或重新渲染时更新模板

mongodb - 在 mongodb 中使用 pymongo 进行更新操作后,如何检索修改后的文档?

C#:合并多数据库驱动接口(interface)

email - 带有 Gsuite 的 Meteor 电子邮件,未知协议(protocol)错误

javascript - 检查按钮是否激活

javascript - ionic 本地存储删除项目

javascript - ldapjs 连接在一段时间后超时

javascript - Firefox 扩展无法覆盖元素事件

java.lang.IllegalStateException : open 错误