如何在流星的帖子中插入用户名

时间:2017-06-26 12:28:18

标签: meteor meteor-blaze meteor-accounts

我想在帖子中插入用户名。当我尝试使用Post.insert({content: content})添加帖子时,帖子已成功插入并显示在客户端上。现在我也尝试插入用户名,所以我尝试这样:

var username = new Meteor.user().username;
Post.insert({content: content, username: username});

现在不仅没有插入用户名,也无法插入内容。没错。我做错了什么?

以上是问题所在。但我犯了一个错误并删除了不安全的包,所以现在我无法从控制台检查结果或直接插入客户端。所以以下是我使用的方法。 (请耐心等待,如果我问愚蠢的问题,我是流星的新手,请原谅我。)

在进口/ both / post.js中我把:

    export const Post = new Mongo.Collection('post');

在server / main.js

    import { Post } from '/imports/both/post.js';

    Meteor.methods({
    addPost: function (content) {
    var user = Meteor.users.findOne(this.userId);
    var username = user ? user.username : 'Anonymous';
    Post.insert({content: content, username: username});
     }
    });

在client / template / postsForm.js中,代码如下:

    import { Post } from '/imports/both/post.js';

    Template.postsForm.events({
    'submit form': function(event){
    event.preventDefault();
    var content = document.getElementById('content').value;
    Meteor.call('addPost', content);
    event.target.reset();
    }
    });

我可以从服务器插入帖子并在客户端显示,但是从客户端我不能。我没有得到任何错误。

1 个答案:

答案 0 :(得分:0)

你确定它在插入时失败了吗?你有一个新的"在Meteor.user()面前,我怀疑它在那里失败了。尝试以下操作,其中包括对用户的空检查,并显示来自插入的任何错误:

let username = Meteor.user() && Meteor.user().username;
Post.insert({content: content, username: username}, function(error) {
  if (error) {
    console.error(error);
  }
};

你也有内容'在引号中,看起来不对。