我可以/应该使用哪些变量类型作为meteor.js会话变量?
我一直在做我可以/应该使用哪些变量类型作为meteor.js会话变量?,meteor,session-variables,Meteor,Session Variables,我一直在做Session.set('currentlyActiveDocument',mydocument.\u id),但这意味着我经常做MyCollection.findOne(Session.get('currentlyActiveDocument'))。我想知道只做Session.set('currentlyActiveDocument',mydocument)并保存那些额外的数据库查找是否可以。也就是说,将对象本身(在本例中为文档)用作会话变量,而不是其ID。我不在乎在更改mydocu
Session.set('currentlyActiveDocument',mydocument.\u id)
,但这意味着我经常做MyCollection.findOne(Session.get('currentlyActiveDocument'))
。我想知道只做Session.set('currentlyActiveDocument',mydocument)
并保存那些额外的数据库查找是否可以。也就是说,将对象本身(在本例中为文档)用作会话变量,而不是其ID。我不在乎在更改mydocument
的属性时是否重新运行反应相关函数
事实上,我最近尝试了这个方法,但遇到了一个令人惊讶的问题:当我执行Session.get(myobject)时,对象的一个方法(
mydocument
,在这种情况下它不是文档,只是一个JS对象)没有出现在另一端foo.myMethod()
返回未定义。您可以使用EJSON可以编码的任何类型的对象。要查看有关此的更多详细信息,请参阅
您还可以为自定义类型添加自己的EJSON扩展
JS对象没有(完全)存储在会话哈希中的原因是它包含一个函数,这些函数被EJSON忽略