进行一些实验,以掌握我学习如何编码的基础知识。整天都在弄乱一个方面,但无法弄明白。我相信它一定很简单,并且会感激任何帮助!
所以我创建了一个Mongo集合:
Posts = new Mongo.Collection('posts');
然后我在集合中添加了3个文档,每个文档有2个字段(名称和数量)。现在,当我在Google Chrome控制台中运行时:
Posts.find().count();
//returns '3' as expected
然而,当我从服务器运行以下代码时(如果它是客户端代码,它是否称为服务器?):
if (Meteor.isClient) {
var c = Posts.find().count();
console.log("The database documents count is " + c);
}
然后它出现在Chrome控制台上:
The database documents count is 0
是什么给出的?这是怎么回事?
提前致谢!!
答案 0 :(得分:1)
工作原理:当您打开页面时,客户端根本没有数据。加载JS后,发布函数开始工作,一段时间后,当发布结束时,您在客户端上有数据。
所以当浏览器运行时:
if (Meteor.isClient) {
console.log(Posts.find().count());
}
您的客户端没有数据,这就是您在控制台中看到0
的原因。
然后你手动打开控制台并写Posts.find().count()
。您需要一段时间才能打开控制台,编写Posts.find().count()
,这次发布功能足以将所有数据发送到客户端,所以现在您在客户端上有数据,您将看到{{1}在控制台中。
您可以尝试此实验:
3
它会立即记录帖子数量,但延迟2秒,这应该足以让发布结束,您将在控制台中看到if (Meteor.isClient) {
setTimeout(function() {
console.log(Posts.find().count());
}, 2000);
}
。您可以更改超时延迟,并了解服务器将帖子数据发送到客户端所需的时间。