2012-05-05 70 views

回答

7

我建議一種方法。

Meteor.methods({ 
    addItem: function (doc) { 
    doc.when = new Date; 
    return Items.insert(doc); 
    } 
}); 

雖然客戶端將運行這個地方,並設置when到自己的當前時間,服務器的時間戳優先和傳播到所有訂閱的客戶端,包括原來的客戶端。您可以在doc.when上排序。

我們可能會添加掛鉤來自動設置時間戳,作爲文檔驗證和權限的一部分。

+0

太棒了,那有用,謝謝! –

+0

請注意,Date對象的存儲現在可以工作,因此除非您真的想以毫秒爲單位存儲日期,否則您不一定需要調用getTime。 –

+0

挺對的,謝謝!更新。 – debergalis

1

如果你願意使用像這些集合掛鉤(https://gist.github.com/matb33/5258260),連同這個奇特Date.unow功能(可以放心地排序上,即使很多文件插入相同的時間戳):

if (!Date.unow) { 
    (function() { 
     var uniq = 0; 
     Date.unow = function() { 
      uniq++; 
      return Date.now() + (uniq % 5000); 
     }; 
    })(); 
} 

if (Meteor.isServer) { 
    // NOTE: this isn't vanilla Meteor, and sometime in the future there may be 
    // a better way of doing this, but at the time of writing this is it: 
    Items.before("insert", function (userId, doc) { 
     doc.created = Date.unow(); 
    }); 
}