node.js - Sails 0.10 ModelIdentity.subscribe 或 .watch 和 publishCreate()?

标签 node.js socket.io sails.js sails.io.js

我正在研究 SailsCasts我正在研究 SailsJS 测试版 0.10

一切正常,除了在 0.9.7 中,我使用这个:

//subscribe this socket to the User model classroom
User.subscribe(req.socket);

// subscribe this socket to the user instance rooms
User.subscribe(req.socket, users);
  • 如何为 0.10 做到这一点?

特别是,订阅 publishUpdatepublishDestroy 工作正常。

对于 publishCreate,我需要 'User.subscribe(req.socket)' 并且我在控制台中收到警告:

debug: Deprecated: Model.subscribe(socket, null, ...)
debug: (see http://links.sailsjs.org/docs/config/pubsub)
debug: Please use instance rooms instead (or raw sails.sockets.*() methods.)

然后:

  • 'model.watch()''model.subscribe()' 有什么区别?

最佳答案

问题一

我更愿意发表评论(缺乏代表......),但你给了the docs吗?好书?

你不能像User.subscribe(req.socket)那样调用.subscribe。它需要第二个参数 records。所以你的 User.subscribe(req.socket, users); 如果 users 是一个用户模型实例列表应该可以工作。

问题2

我不是 node 或 sails 方面的专家(完全...),但是 the docs - watch claimmodel.watch() 为客户端订阅模型实例的 publishCreate 事件。我没有看到 publishUpdate、publishDestory 等的提及。我认为它只监视创建事件。 .subscribe() 获取模型(或模型)列表,并为该模型实例列表订阅客户端 publishAdd、publishDestroy、publishRemove、publishUpdate 事件(默认情况下)。您还可以指定要订阅的上下文。

所以,如果您只想发送套接字 publishCreate 事件,那么您似乎真的想使用 User.watch(req.socket) 而不是 .subscribe() .如果您需要所有这些,请使用类似 User.subscribe(req.socket,users,[create,update,destroy,]) 的东西。 如果你想酷一点,你可以设置 autosubscribe 属性来包含你关心的上下文列表,然后使用 User.subscribe(req.socket,users) the docs - context .

干杯

关于node.js - Sails 0.10 ModelIdentity.subscribe 或 .watch 和 publishCreate()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24121885/

相关文章:

node.js - Express Js + Sequelize : How to load models?

node.js - 了解 Node/JavaScript 回调函数

sockets - 在事件之间将属性附加到套接字

node.js - 如何在 sails 模型中使用日期时间

node.js - Volta 与yarn run 构建系统找不到指定的路径

node.js - 在 Mongoose 中创建新文档时可以添加新属性吗?

python - django 通过 Node 服务器和 socket.io 将消息保存到数据库

javascript - 如何知道哪个用户在线?

javascript - sails 调试命令在 Sails.js 中不起作用

sails.js - 你如何配置sails + tailwindcss一起工作