流星集合中的对象

时间:2015-07-30 19:27:18

标签: javascript meteor

我创建了以下函数,以便能够构建存储在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);

不确定为什么。

3 个答案:

答案 0 :(得分:1)

find返回一个游标。您需要调用findOnefetch(在光标上)来获取文档。例如:

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])