我创建了以下函数,以便能够构建存储在Meteor Collection中的对象,并从那里我可以访问它的属性。该功能是在服务器端创建的。
function tweet(uName, sName, uProfile, uTweet, uMedia) {
this.userName = uName;
this.screenName = sName;
this.profileImage = uProfile;
this.tweet = uTweet;
this.mediaPic = uMedia;
}
出于测试目的,我创建了一个随机的推文对象:
var temp = new tweet (john, johnnyBoy, dog, 12, 14);
当我在控制台上登录时,它一直运行良好。例如,
console.log(temp.userName) //logged john
现在我将其插入到具有以下内容的集合中:
Tweets.insert(temp);
当我尝试访问userName时,保持返回undefined。
console.log(Tweets.find().userName);
不确定为什么。
答案 0 :(得分:1)
find返回一个游标。您需要调用findOne或fetch(在光标上)来获取文档。例如:
console.log(Tweets.findOne().userName);
console.log(Tweets.find().fetch()[0].userName);
答案 1 :(得分:0)
您想要像这样查询
<input type="text" id="theContact" class="theContact" name="theContact" list="contactlist" size="35" placeholder="none" />
<datalist id="contactlist">
<?php
// Populate the options here, in a logic loop grabbing the data...
echo '<option value="' . $value . '">' . $value . '</option>';
?>
</datalist>
.find()返回游标或结果集。如果要获取实际项目,请使用.findOne()。或者您可以执行以下操作:
console.log(Tweets.findOne().userName);
答案 2 :(得分:0)
函数collection.find([selector], [options])
返回游标,即反应数据源。这意味着它不会立即访问数据库或返回文档。但是,游标提供的功能为fetch()
,map()
和forEach()
。
如果您想访问Tweets
集合的文档,则需要使用Tweets.findOne([selector], [options])
或Tweets.find([selector], [options]).fetch()[0]
。
详细了解collection.find([selector], [options])
和collection.findOne([selector], [options])
。