如何从集合A中的项目中的ID引用的集合B中显示项目中的字段?

时间:2016-08-16 16:29:12

标签: meteor meteor-blaze

我有两个收藏品

var mysql= require("mysql");
var bcrypt = require("bcryptjs");

var sql = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "1234",
    database: "dricm"
});

sql.connect(function (err) {
    if(err){
        console.log("error");
    }else{
        console.log("connected");
    }
});

var User= {

}

User.createUser = function createUser(newUser) {
    bcrypt.genSalt(10, function(err, salt){
        bcrypt.hash(newUser.password,salt, function (err, hash) {
            newUser.password = hash;
            var query = sql.query("INSERT INTO USERS set ?", newUser, function (err, res) {
                console.log(query);
                if(err) {
                    console.log("error");
                }
                else{

                    console.log(res.insertId);
                }
            });
        });
    });

}

module.exports= User;

CategoryCollection在一个类别中保留帖子,在帖子对象中有作者,作为id。看看下面的图片,请注意 posts.author

enter image description here

usersWordpressCollection包含在 posts.author

下的categoryCollection中引用 id (见下图)的作者

enter image description here

当我显示帖子时,它来自CategoryCollection = new Mongo.Collection("CategoryCollection"); usersWordpressCollection = new Mongo.Collection("usersWordpressCollection"); 所以我可以得到帖子,链接等我也可以获得作者ID但是当谈到这个时,我想要返回,而不是id ,但参考的作者信息在categoryCollection

中找到

最新的HTML

usersWordpressCollection

最新js

<template name="latest">

  <ul>
      {{#each articles}}
        <li class=" home-latest ">
            <span class="label">  <a class="" href="/catsingle/CategorySingle/{{_id}}">{{name}}</a></span>
        {{#each posts}}
          <div class="card">
            <div class="category-img">{{{image}}}</div>
          <div class="card-divider">
          {{title}}
          </div>
          <div class="card-section">
          <p>
            {{> authors}}
          </p>
          </div>
          </div>

      </li>
        {{/each}}
  </ul>
</template>

作者html

Template.latest.helpers({
  articles: function () {
    var id = FlowRouter.getParam('_id');
    return CategoryCollection.find({}, {sort: {date_created: -1}, limit:1}).fetch();
  }
});

作者js

<template name="authors">

{{#each authors}}
<p>
  {{name}}
</p>
{{/each}}
</template>

如您所见,Template.authors.helpers({ authors: function () { var id = this.author; console.log(id); var alias = usersWordpressCollection.findOne(id, {fields: {name: 1} }); return alias.name; console.log(alias.name); }); this.author categoryCollection中的作者 id 。我试图在与作者匹配的posts.author中找到 id ,然后我想显示 id 匹配的作者的usersWordpressCollection。但我无法看到让它发挥作用,我怎么能实现这一点。

1 个答案:

答案 0 :(得分:0)

由于每个帖子只有一位作者,您不需要迭代作者的光标,您只需要一个。所以你在哪里:

{{#each authors}}
  <p>
    {{name}}
  </p>
{{/each}}

改为使用:

{{#with author}}
  <p>
    {{name}}
  </p>
{{/with}}

现在,进入authors模板的数据上下文将是post对象(因为您位于{{#each posts}}内。因此,您可以将author帮助器构建为如下:

Template.authors.helpers({
  author(){
    return usersWordpressCollection.findOne({ id: parseInt(this.author) });
  }
});

由于您已指出this.author是一个字符串,但您的用户集合的id是一个整数,因此您需要转换该类型 - 您可以直接在查询中执行此操作。