如何与社交化进行基本对话:消息传递?

时间:2016-04-03 13:44:01

标签: javascript meteor

我正在尝试使用此代码进行基本对话:

JS:

var conversation;

Template.messagestpl.onCreated(function(){
    this.subscribe('getUserDataByUsername', 'google', function(){
        Tracker.afterFlush(function () {
            conversation = new Conversation().save();
            var user = Meteor.users.findOne({username: 'google'});
            conversation.addParticipant(user);
            conversation.sendMessage("Hello World!1");
            conversation.sendMessage("Hello World!2");
            conversation.sendMessage("Hello World!3");

            conversation.participants().forEach(function(participant){
                console.log(participant.user().username);
            });

        });
    });
});

Template.messagestpl.helpers({
    messagesList: function(){
            return conversation.messages();
    }
});

火焰:

<template name="messagestpl">
    messages
    {{#if Template.subscriptionsReady}}
        {{#each messagesList}}
            {{message}}: {{message.body}}
        {{/each}}
    {{/if}}
</template>

我收到一条错误消息:

模板助手中的异常:TypeError:无法读取未定义的属性“消息”

我做错了什么?

2 个答案:

答案 0 :(得分:0)

出于空间原因,我会把它放在答案中,即使它可能不完整。

我原以为问题是[HttpPost] public async Task<ActionResult> Register(RegisterViewModel model) { // verify the models' valid if (ModelState.IsValid) { var user = new ApplicationUser { /* ... */, CompanyID = model.CompanyID // entity we retrieved }; // // SignInManager yatta yata // } return View(model); // Uh-oh fallback. } 变量不是被动的。

您可以将conversation设为ReactiveVar,也可以将conversation放入会话变量中。

后:

conversation

把这个:

           conversation.participants().forEach(function(participant){
            console.log(participant.user().username);
        });

然后更改辅助函数:

Session.set('conversation', conversation);

});

我认为不需要Template.afterFlush()。

答案 1 :(得分:0)

我认为你需要使用Sessions。所以,希望这个简短的例子可以帮助你:

Template.convers.events({
'click #addConvers': function(event, template) {
    event.preventDefault();
    var user = Meteor.users.findOne({username: 'google'});

    var conversation = new Conversation().save();
    conversation.addParticipant(user);
    Session.set('converID', conversation._id);
}
});

您需要通过会话ID返回消息收集:

Template.messagestpl.helpers({
messagesList: function(){
        var sGet = Session.get('converID');
        return Meteor.messages.find({
            conversationId:sGet});
}
});