我正在研究 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 做到这一点?
特别是,订阅 publishUpdate
和 publishDestroy
工作正常。
对于 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/