MeteorJS - 为什么我的集合插入功能只被调用一次?

时间:2014-12-29 09:17:02

标签: javascript meteor insert

我正在使用MeteorJS填充应用,并且我已经坚持了几天这个问题。让我们说我的应用程序有一个名为HistoryItem的集合。这就是我如何定义操作此集合的规则:

history_item.js

HistoryItem.allow({
  insert: function (userId, doc) {
    console.log('Histoy item allow insert');
    var n = 100000000, m = 10;
    doc.modified = new Date;    
    doc.latitude = Math.round(doc.latitude*n)/n;
    doc.longitude = Math.round(doc.longitude*n)/n;
    doc.noise = Math.round(doc.noise*m)/m;
    var u = Meteor.users.find({ _id: userId }).fetch();
    if (u.length > 0) {
      doc.user = {};
      doc.user.name = u[0].profile.name;
    }

    var ok = doc.owner || doc.noisetube;
    if (ok) {
      LiveUser.upsert({owner: doc.owner}, doc);
    }
    return userId;
  },
  remove: function(userId, doc){
    return true;
  }
});

Meteor.publish('history_item', function (userId) {
  return HistoryItem.find({owner: userId}, {sort: {createdAt: -1}});
});

在客户端,我有这段代码将文档插入到HistoryItem集合中:

client.js

...
    var cursor;
        while (!cursor){
          cursor = Meteor.subscribe('history_item', Meteor.userId());
        }
        var cursor = HistoryItem.find();
        var count = cursor.count();
        console.log("DEBUG: Enter this point");
        if (count < 100) {
          console.log("1");
          HistoryItem.insert(msg, function(err, res) {});
        }
        else {
          Meteor.call('removeLastHistoryItem', Meteor.userId());
          console.log("2");
          HistoryItem.insert(msg, function(err, res) {});
        }
...

奇怪的是,在我的浏览器控制台中,它会注销该行: "DEBUG: Enter this line""1" 多次,但在我的服务器端控制台中,它只显示行"History item allow insert" 一次

我不知道为什么会发生这么奇怪的事情,我相信这就是为什么我的应用程序不能按照我的意愿行事的原因。

我已经被困在这个问题好几天了。所以我真的,真的希望你们能帮忙。谢谢&amp;非常感谢先进!

0 个答案:

没有答案