2016-01-01 69 views
0

我有一個用MeteorJS編寫的應用程序,該功能僅用於登錄用戶,並且Mongo中的所有文檔都有一個用於每個登錄用戶的userId字段。 但是,現在我想添加一個「演示」功能,在登錄頁面上用戶可以點擊而不是「登錄」「試用演示」按鈕。 功能的主要區別在於,「演示用戶」不在MongoDb數據庫中存儲任何內容,所有數據和操作僅在本地MiniMongo數據庫上執行。 有沒有簡單的方法來實現這一目標?MeteorJS - 與MongoDb同步僅適用於已登錄用戶

我知道new Meteor.Collection(null)它只是在本地,但我定義了應用程序的全局級別的集合,我無法訪問Meteor.userId()' or this.userId`因此它必須檢查每個集合的哪個集合使用。

+0

您可以爲ID爲「demo」的特殊用戶創建一個受限制的常規帳戶嗎?這可能比擁有兩個版本 –

+0

不容易,因爲然後每個「演示用戶」將共享相同的數據,使演示不可用 –

回答

0

結束了以下方法:

在的地方是我定義我的集合(服務器和客戶端之間共享代碼)我定義了兩個集合:每個流星方法

var Docs = new Meteor.Collection("docs"); 
var DocsOffline = new MeteorCollection(null); 

沒有我訪問集合使用以下變量:

let docsSource = Meteor.userId() ? Docs : DocsOffline; 

,然後在docsSource

操作

getMeteorData mixin方法的客戶端上,我有類似的方法來使數據可用(我使用ReactJS)

+0

這可能會更簡單:'var collectionName = Meteor.userId()? 「docs」:null;'然後做'var Docs = new Meteor.Collection(collectionName);'然後你的其他代碼不必關心。 –

相關問題