【问题标题】:Save a value in Collections and find it with Meteor在 Collections 中保存一个值并使用 Meteor 找到它
【发布时间】:2013-12-03 03:39:06
【问题描述】:
Values = new Meteor.Collection("values");

if (Meteor.isServer) {
  Meteor.startup(function () {
    Meteor.setInterval(function() {
      Values.insert({id: Math.random(), name: "value"});
      console.log(Values.find({name: "value"}).id);
    }, 1000);
  });
}

我有那个代码,我试图每秒向 Values 添加一个值,并找到我拥有的所有值并每秒打印它们。但是,它没有找到我添加的值并正在输出:

I2043-14:21:56.895(0)? undefined

【问题讨论】:

    标签: meteor server-side serverside-javascript


    【解决方案1】:

    find 返回一个游标,它是一个包含搜索结果的对象(有点像结果数组)。这样做是因为find 可以得到不止一个结果,具体取决于您传递的选择器。

    它有一个forEach,类似于JS,接受一个函数,接收文档、索引和光标作为参数。

    Values.find({name: "value"}).forEach(function(doc,index,cursor){
      console.log(doc.id);
    });
    

    在您的情况下,find 的结果看起来类似于:

    [
      {id: SOME_RANDOM_NUMBER, name: "value"},
      {id: SOME_RANDOM_NUMBER, name: "value"},
      {id: SOME_RANDOM_NUMBER, name: "value"},
      {id: SOME_RANDOM_NUMBER, name: "value"},
    ]
    

    【讨论】:

    • 知道如何获得集合的长度,即。例如,一个集合中有多少个元素?我根据你告诉我的find的结果尝试了Values.find({name: "value"}).length,但我得到的是undefined
    • 我也试过Values.find().count(),但每次都返回426:o
    • @user996056 Values.find({}).count() 返回集合的长度。
    • 这也是在一个绝对空的集合上返回 426。完整代码在这里:gist.github.com/davidgomes/464b592f4f4bed809c1b
    • 您需要使用Values.remove(doc._id)来删除文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多