【问题标题】:In Meteor, how can I create a new Mongo collection from within an event handler?在 Meteor 中,如何从事件处理程序中创建新的 Mongo 集合?
【发布时间】:2015-07-22 21:56:25
【问题描述】:

我试图弄清楚每次按下按钮时如何添加新集合。我有这个 html:

html:

<template name="tempName">
    <button class="submitButton">Submit</button>
</template>

javascript:

Template.tempName.events({
    'click .submitButton': function() {
      count += 1;
      Npm.newCol = new Mongo.Collection("NUM:" + count);
      Npm.newCol.insert({
        field1: "field1 contents",
        field2: "field2 contents"
      });
    }
  });

据我所知,这绝对没有任何作用。如果我将 .submitButton click 事件中的所有内容放在 js 文件的顶部(在“if (Meteor.isClient)”之外),那么它可以完美运行。但我希望每次提交表单时都创建一个新集合。有谁知道如何做到这一点?

【问题讨论】:

  • 您是否希望将新文档插入到现有集合中?动态创建的集合几乎从来都不是流星中任何问题的正确解决方案。
  • 不幸的是,每次表单提交都会在一个集合中自动生成多达数百个新文档,我需要将它们分开——我不能将来自不同运行的所有文档都放在同一个集合。所以也许这很糟糕,但我很确定动态创建的集合在我的情况下是正确的解决方案。
  • 好吧,您可以很容易地创建非托管客户端集合,但创建服务器知道的新集合实际上是really tricky
  • 天哪。我没看到,谢谢。

标签: javascript mongodb meteor


【解决方案1】:

这很简单,只需调用一个可以访问服务器的方法,它就会创建本地集合和 Mongo 集合。

也就是说,如果您允许用户创建收藏集,我 99% 肯定您会过得很糟糕......

【讨论】:

  • 好的,谢谢。这就说得通了。不用担心,在我的具体情况下,允许用户创建集合不会成为问题。
  • 实际问题:“可以访问服务器的方法”是什么意思?这不仅仅是 Meteor.methods 部分中的一种方法吗?
  • 啊,好问题。我只是说代码应该在clientserver 文件夹以外的地方
  • 哦,好吧。感谢您的澄清
猜你喜欢
  • 1970-01-01
  • 2015-01-17
  • 2013-12-24
  • 2016-09-15
  • 2014-02-26
  • 2019-01-03
  • 2019-09-24
  • 2013-05-12
  • 1970-01-01
相关资源
最近更新 更多