Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript meteor应用程序:如何从客户端的集合中正确检索单个文档_Javascript_Meteor - Fatal编程技术网

Javascript meteor应用程序:如何从客户端的集合中正确检索单个文档

Javascript meteor应用程序:如何从客户端的集合中正确检索单个文档,javascript,meteor,Javascript,Meteor,在我的meteor应用程序中,我将客户端的唯一id字符串存储在一个名为UserNavigationTracker的集合中: { "clientId" : "xxNfxxPGi7tqTbxc4", "currentWizard" : "IntroductionWizard", "currentStep" : "Step-1", "_id" : "ifBJ688upEMfzzviC" } 作为应用程序初始化的一部分,我需要检查并查看有关我的客户端的信息是否已存储在数

在我的meteor应用程序中,我将客户端的唯一id字符串存储在一个名为UserNavigationTracker的集合中:

{
    "clientId" : "xxNfxxPGi7tqTbxc4",
    "currentWizard" : "IntroductionWizard",
    "currentStep" : "Step-1",
    "_id" : "ifBJ688upEMfzzviC"
}
作为应用程序初始化的一部分,我需要检查并查看有关我的客户端的信息是否已存储在数据库中。 我正在努力从收藏中找回这张唱片。 以下是我正在做的:

var clientIdInDatabase = UserNavigationTrackerCollection.find({"clientId": "xxNfxxPGi7tqTbxc4"});
console.log('clientIdInDatabase:  ' + clientIdInDatabase);
此操作的浏览器控制台输出为:clientIdInDatabase:[对象]


Mt问题是:如何从这个返回的对象中获取clientId字段的实际值?

find
返回一个游标,只需将其替换为
findOne
即可获取单个对象(或未定义)。如果要获取多个文档,可以使用
find(…).fetch()
获取它们的数组。您可以在文档中阅读所有这些功能的文档


根据我们的讨论,这可能对客户起到补偿订阅延迟的作用:

Tracker.autorun(function() {
  var clientId = Session.get('clientId');
  var unt = UserNavigationTrackerCollection.findOne({clientId: clientId});
  Session.set('isClientIdInDatabase', unt != null);
});

注意:这假设
clientId
isclientindatabase
存储在会话变量中。

当我使用findOne时,我得到的是未定义的对象,而不是对象。如果使用
findOne
得到的是未定义的对象,则表示找不到您要查找的对象。检查选择器,并检查数据库本身的内容。如果您在开发模式(默认)下运行,您可以在命令行上执行:
$meteor mongo
以访问本地meteor db shell。这非常奇怪-当我从浏览器控制台发出命令UserNavigationTrackerCollection.findOne()时-我得到了预期的结果。我的应用程序中完全相同的语法在客户端上运行时返回Unfinedis?如果是这样,那么您的查找可能只是在数据到达minimongo之前执行的。是的,这是在客户端上运行的。服务器上唯一的代码是UserNavigationTrackerCollection的定义。我应该在别的地方叫“find()”吗?