meteor app:如何从客户端上的集合中正确检索单个文档

时间:2014-04-08 19:28:56

标签: javascript meteor

在我的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字段的实际值?

1 个答案:

答案 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);
});

请注意,这假设clientIdisClientIdInDatabase存储在会话变量中。