如何观察在 Sails .js 中添加到模型中的新记录

How to watch for new records added to model in Sails.js

本文关键字:添加 模型 新记录 js Sails 何观察 观察      更新时间:2023-09-26

当用户向用户聊天消息传递系统中的某个特定 Id(在用户模型中)发送消息时,我正在尝试推送消息。我无法让它工作,也不知道如何开始。我的Messaging控制器中有这个:

sendAndReceiveMsgs: function(req, res) {
    if (req.isSocket && req.param('message') && req.param('to')) {
        var message = req.param('message'),
            from = req.user.id,
            to = req.param('to');
        Messaging.create({ message: message, from: from, to: to })
            .exec(function (err, created) {
                console.log('sent');
        });
    } else if (req.isSocket) {
        Messaging.find({ where: { to: req.user.id }, limit: 1, sort: 'id DESC' })
        .exec(function(err, messages) {
            if(messages.length > 0){
                console.log(message.length + " new messages");
            } else {
                console.log("No new messages");
            }
            Messaging.subscribe(req.socket, message);
            Messaging.watch(req);
            Messaging.publishCreate({ id: message[0].id, message: message[0].message });
        });
    } else if (!req.isSocket) {
        return res.notFound();
    }
}

但是,它不会向用户推送进一步的新消息(为他准备)。有什么线索吗?我真的不明白这一点,也不知道从这里去哪里。谢谢!

请同时显示客户端代码。我注意到的一件事是你正在使用订阅,但它仅用于查看由.publishUpdate(),.publishDestroy(),.publishAdd()和.publishRemove()发出的消息。不确定这是否有帮助

你需要在客户端中使用io.socket.on。请参阅此处的文档。如果使用发布/订阅方法,则 eventIdentity 也是模型名称。