在我的meteor应用程序中,我将客户端的唯一id字符串存储在名为UserNavigationTracker的集合中:
{
"clientId" : "xxNfxxPGi7tqTbxc4",
"currentWizard" : "IntroductionWizard",
"currentStep" : "Step-1",
"_id" : "ifBJ688upEMfzzviC"
}
作为应用初始化的一部分,我需要检查并查看有关我的客户端的信息是否已存储在数据库中。 我正在努力从收集中检索这条记录。 这就是我正在做的事情:
var clientIdInDatabase = UserNavigationTrackerCollection.find({"clientId": "xxNfxxPGi7tqTbxc4"});
console.log('clientIdInDatabase: ' + clientIdInDatabase);
此浏览器控制台输出是:clientIdInDatabase:[object Object]
Mt问题是:如何从此返回的对象中获取clientId字段的实际值?
答案 0 :(得分:1)
find
返回一个游标,只需将其替换为findOne
即可获得单个对象(或未定义)。如果您想要获得多个文档,可以使用find(...).fetch()
获取一组文档。您可以在文档的this section中阅读所有这些功能的文档。
根据我们的讨论,这可能会在客户端上起作用以弥补订阅延迟:
Tracker.autorun(function() {
var clientId = Session.get('clientId');
var unt = UserNavigationTrackerCollection.findOne({clientId: clientId});
Session.set('isClientIdInDatabase', unt != null);
});
请注意,这假设clientId
和isClientIdInDatabase
存储在会话变量中。