【问题标题】:db is not defined - initializeOrderedBulkOp()db 未定义 - initializeOrderedBulkOp()
【发布时间】:2016-03-03 14:22:20
【问题描述】:

我在尝试执行批量操作时遇到 mongodb/meteorangular 问题,我得到的 db 未定义。

我的模型如下:

Tests = new Mongo.Collection('tests');

我的电话:

 var bulk = db.collection('tests').initializeOrderedBulkOp();
       ............
       ............
    bulk.execute();

这个功能甚至可以与流星一起使用吗?看起来我也没有错别字。

不胜感激

【问题讨论】:

  • 可用,但只能在“服务器”端使用,不能在“客户端”(浏览器)中使用。这需要一点时间,但如果您打算使用它,则可以这样做。
  • 是的,现在正在尝试。我在执行正确的公式时遇到了“仅在服务器上”错误,如果我成功了,我会在完成后更新帖子。
  • 好吧,“仅在服务器上”就是它所说的。您不能在“minimongo”(这是浏览器端库)中使用它。相反,如果您希望直接从“服务器”执行调用,那么这完全是另一回事,而且相对简单。只要您从驱动程序中获取底层的collectiondatabase 对象,而不是使用Meteor.collection 接口。
  • 好吧,我实际上是从我的应用程序外部资源的回调中播种我的数据库。我在客户端做它是因为它更容易,但我计划将所有东西都移到服务器上。我还没有使用过流星服务器,但如果一切都在那里,那会更好/更糟,因为我的回调也可以删除我的数据库中的东西,但我认为这将是一种发布/订阅的交易。
  • 在这里等第二个,“我的应用程序之外的资源”?那么您是否使用流星进行播种?如果您只想要一个单独的播种应用程序,那么为什么要使用流星呢?只需创建一个直接使用驱动程序的单独数据播种应用程序。如果这实际上是您的意图,那么用“流星”标记确实会使问题感到困惑。您需要对如何做做出具体决定,然后酌情实施。 Minimongo 不应该真的支持这个(恕我直言),因为“批量”操作(通常)不应该来自远程(浏览器)客户端。

标签: mongodb meteor angular-meteor


【解决方案1】:

我同意@blakes。实际上已经声明了“测试”集合。下面这篇文章很有帮助:

http://meteortips.com/first-meteor-tutorial/structure/

文章的精髓。即用于客户端和服务器端的声明请放入文件夹/lib

希望对你有帮助

【讨论】:

    【解决方案2】:

    在服务器上(不会在客户端上工作):

    Tests = new Mongo.Collection('tests');
    

    而不是:

    var bulk = db.collection('tests').initializeOrderedBulkOp();
    

    var bulk = Tests.rawCollection().initializeUnorderedBulkOp();
    

    而不是

    bulk.execute();
    

    Meteor.wrapAsync(bulk.execute)();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-27
      • 2021-10-30
      • 2017-12-26
      • 2020-12-12
      • 2017-06-07
      • 1970-01-01
      • 2022-06-13
      • 2021-01-19
      相关资源
      最近更新 更多