用户 ID 与用户 post 不同

user id not the same as user post id

我有一个快捷应用程序,您可以在其中制作和查看 posts。我正在努力做到这一点,如果用户 post 做到了,那么编辑图标就会出现在他们旁边。我尝试使用车把助手来做到这一点。

editIcon: function (user, loggedUser, floating = true) {
console.log(user, loggedUser);
if (user._id.toString() == loggedUser._id.toString()) {
  if (floating) {
    return `<div>edit icon</div>`;
  }
} else {
  return '';
}

},

基本上用户就是user._id。 loggedUser 是 post 中的 id,与用户 id 相同。

这是我的车把的样子:

  {{#each posts}}
    <div class="post-extra">
      <div class="card-image">
        <!-- User is the logged in user and then post id (_id) -->
        {{{editIcon user _id}}}
      </div>
      <a href="#" class="user-link">{{user.username}}</a>
      <h2>{{postTitle}}</h2>
    </div>
  {{else}}
  <p>No posts to display</p>
  {{/each}}
</div>

问题是当我控制台log user 和loggedUser 时,返回的id 是不同的。不过在我的 mongodb 中,用户 ID 和 post 中的用户 ID 是相同的。

我的 post 和用户对象:

Post:

_id:ObjectId("5f8523d8b58f4919908e3895") <-- this is being returned..
postTitle:"Test post"
postBody:"<div>stuff</div>"
user:ObjectId("5f8522c9c0ec222ea4b7c8c0") <-- instead of this
createdAt:2020-10-13T03:49:44.333+00:00
__v:0

用户:

  _id: ObjectId("5f8522c9c0ec222ea4b7c8c0"), // User id 
  username: 'test',
  email: 'test@gmail.com',
  password: 'hashed password here',
  createdAt: 2020-10-13T03:45:13.018Z,
  __v: 0

当您将 editIcon 助手称为 {{{editIcon user _id}}} 时,您传递的是 postuser 和 [=] 的 _id 14=]。这是不正确的,因为您要比较的是 post 的 user 与请求的 user(logged-in user)。

根据您提供的示例,不清楚您是否有权访问模板中请求的 user如果你这样做,它肯定不会嵌套在post对象中,所以你需要一个路径来加强一两个上下文来访问它。结果看起来像:

{{{editIcon user ../user}}}

在此示例中,logged-in userposts 数组的同级,但您的数据结构可能不同。

我创建了一个fiddle供您参考。