在Meteor中的帖子中插入用户名可以通过以下步骤实现:
meteor add accounts-base accounts-password
Posts = new Mongo.Collection('posts');
Posts.attachSchema(new SimpleSchema({
title: {
type: String,
label: "Title",
max: 200
},
content: {
type: String,
label: "Content",
max: 2000
},
username: {
type: String,
label: "Username",
autoValue: function() {
if (this.isInsert) {
return Meteor.user().username;
}
},
autoform: {
type: "hidden"
}
}
}));
在上面的代码中,我们使用了SimpleSchema来定义帖子集合的结构,并在其中添加了一个自动计算的字段username
来存储用户名。autoValue
函数会在插入新帖子时自动设置该字段的值为当前登录用户的用户名。
<template name="postForm">
{{#autoForm collection=Posts id="postForm" type="insert"}}
{{> afQuickField name='title'}}
{{> afQuickField name='content'}}
{{> afQuickField name='username' type='hidden'}}
<button type="submit" class="btn btn-primary">Submit</button>
{{/autoForm}}
</template>
在上面的代码中,我们使用了AutoForm包来创建帖子表单,并使用afQuickField
模板来快速生成表单字段。通过设置type='hidden'
,我们将username
字段设置为隐藏字段。
Template.postList.helpers({
posts: function() {
return Posts.find();
},
getUsername: function(userId) {
var user = Meteor.users.findOne(userId);
if (user) {
return user.username;
}
}
});
在上面的代码中,我们定义了一个helper函数getUsername
,该函数接受一个用户ID作为参数,并通过查询Meteor.users
集合获取用户名。
{{getUsername}}
来显示用户名:<template name="postList">
<ul>
{{#each posts}}
<li>
<strong>{{title}}</strong> - {{getUsername createdBy}}
</li>
{{/each}}
</ul>
</template>
在上面的代码中,我们使用了{{#each}}
块来遍历帖子列表,并在每个帖子中显示标题和用户名。
通过以上步骤,你就可以在Meteor中的帖子中插入用户名了。这样,每个帖子都会关联到创建它的用户,并在帖子列表中显示用户名。
领取专属 10元无门槛券
手把手带您无忧上云