- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我为此疯狂地搜索了互联网,这些帖子似乎与我最想做的事情相关:
How to get added record (not just the id) through publishAdd()-notification?
Filtering socket.io subscriptions
但他们并没有太大的帮助
我有样板间
autosubscribe:['add:people','update:people']
attributes:{
people:{collection:'people',via:'room'},
temp:{type:'integer'}
},
模范人物
attributes: {
name:{type:'string'},
room:{model:'rooms'},
status:{type:'string',enum:['frustratedWithOfficialDocumentationBeingSoFracturedBetween:HiddenGitHubs_GoogleMisdirectsOnWebsite_OldYoutubes_ConceptsReferenceWhichAreForNoReasonSplitUp','personIsDead']
},
现在,假设我没有在房间中添加另一个人(这可能会触发 publishAdd 事件),我发现我的一个人已经死了,我需要简单地更新他们的状态
People.findOne({name:'mrHappy'}).exec(err,mrHappyObj){
mrHappyObj.status = 'personIsDead'
mrHappyObj.save() //etc
People.publishUpdate(mrHappyObj.id,{status:mrHappyObj.status})
})
所以这对订阅“mrHappy”的每个人来说都很棒,但如果我能找到可以告诉 ROOM 他与之相关的东西他自动死了,那就太棒了,我不在乎它是什么只给我 mrHappy 的 ID,我真的很想自动收到通知。
我尝试但没有必要阅读的奖励内容。我在我的 People 模型中写了这个函数,但它看起来很笨拙
afterUpdate: function(updatedRecord, next)
{
sails.log.debug("I updated a People! derp",updatedRecord);
sails.log.debug("key is ",sails.models[this.identity].primaryKey);
var pKey = sails.models[this.identity].primaryKey
var thisModelId = this.identity
_.each(Z.getAssociationParents(this.identity), function(association) {
// //so we now have the name of a parent model, we now have to find the id() of the parent that this
// //NEW thing is pointing to?
// //This is the parent that needs to be notified that he now owns a new vehicle. We have to take
// //the socket in his room and then use it to subscribe to this change!
// console.log("parent model found:",association)
sails.log.debug("parent room",'sails_model_'+association+'s_'+ updatedRecord[association]+':'+'update')
var sockets = sails.sockets.subscribers('sails_model_'+association+'s_'+ updatedRecord[association]+':'+'update')
sails.log.debug("child room",'sails_model_'+thisModelId+'_'+ updatedRecord[pKey] +':'+'update')
var deleteMeSocketsInChild = sails.sockets.subscribers('sails_model_'+thisModelId+'_'+ updatedRecord[pKey] +':'+'update')
sails.log.debug("sockets in parent:", sockets, "child:",deleteMeSocketsInChild)
for(var s in sockets)
{
var sock = sails.io.sockets.socket(sockets[s]);
//TODO !! send the subscribe method the needed primary key object
sails.models[thisModelId].subscribe(sock, Z.subscribePluralizer(pKey,updatedRecord[pKey])); //TODO - get the primary key as the last paramater to this function (updaterd record
sails.log.debug("break")
// //could pass it a null
// //If i am correct, updatedRecord is the whole record that has been updated. We are wanting to
// //subscribe the parent socket(s) to it. If this doesn't work , try using the information within
// //the udpatedRecord to do the subscribe unless you can think of a better way.
sails.log.debug("sockets in parent:", sockets, " NEW child:",deleteMeSocketsInChild)
}
});
next()
}
其他功能
//return the models that are your parents
getAssociationParents: function(modelName) {
var assocArr = []
if (sails.models[modelName]) {
for (var a in sails.models[modelName].attributes) {
if (sails.models[modelName].attributes[a].model)
assocArr.push(a)
}
}
return assocArr
},
//inspired by the pluralize function in \sails\lib\hooks\pubsub\index.js - we have to wrap our primary key up all pretty for it
// since we don't expect our updatedRecords function to return an array of new objects (it shouldn't) we won't use the _.map function from pluralize
subscribePluralizer: function(pKey, value) {
//this function should be examined before using - 1-28-2015
var newObj = {}
newObj[pKey] = value
newObj = [newObj]
return newObj
},
最佳答案
我愿意接受这里的建议。但这是一种享受
你可以把它放在你的模型中(或者理想地把它打包成服务或其他东西)
afterUpdate:function(updated,cb){
var self = this
Z.publishParentUpdate(updated,self, function(err){
if(err){sails.log.debug(self.identity,'afterUpdate error',err)}
try{
sails.models[self.identity].publishUpdate(updated.id,updated)
cb()
}catch(err){sails.log.warn('error at end of afterupdate!',err)}
})
}
还有你们服务中的这些坏小子,我用 Z.js 做我的
publishParentUpdate:function(updatedObj,theThis,cb){
//iterate over all the attributes that have a model key in the attributes of this model
var error = null
_.each(Z.getAssociationParents(theThis.identity), function(association) {
var parentModel = sails.models[theThis.attributes[association].model] //we can use this to directly address the parent model and do its finds / updates
var embeddedUpdateObj = {} //container for the object that we are going to fake the update message with
embeddedUpdateObj[theThis.identity]=updatedObj //set the updated properties inside the model
try{ //probably don't need to try catch, but since we could make a mistake assuming some things above it seems smarter
parentModel.publishUpdate(updatedObj[association],embeddedUpdateObj) //updating based on the id contained in our model and then packing in our happy object
}catch(err){
sails.log.warn('error while doing a collection update',err)
error = err
}
cb(error)
});
},
getAssociations: function(modelName) { //modelName is string!
//function returns
var assocArr = []
if (sails.models[modelName]) {
for (var a in sails.models[modelName].attributes) {
if (sails.models[modelName].attributes[a].collection)
assocArr.push(a)
}
}
return assocArr
},
//return the models that are your parents
getAssociationParents: function(modelName) {
var assocArr = []
if (sails.models[modelName]) {
for (var a in sails.models[modelName].attributes) {
if (sails.models[modelName].attributes[a].model)
assocArr.push(a)
}
}
return assocArr
},
关于sails.js - 如何通过自动订阅发布/订阅来捕获具有更新的链接集合的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28592768/
我有一个网站,并且我使用 javascript sdk 添加了“点赞”按钮。 这是代码 (function(d, s, id) { var js, fjs = d.g
我知道 HTML 是逐行读取的。当您链接多个 css 文件(如规范化文件和样式表文件)时,由于 CSS 重要性特异性和源顺序,样式表文件应链接在规范化文件之后。看起来这不会影响链接的 JavaScri
我正在使用官方 Bootstrap site 提供的 CDN 链接在我的网络应用程序中使用面板进行测试 在彻底检查我的代码后,面板没有显示。 但是我在 SO 上看到了类似的帖子并且 CDN 链接不同
这里是编码初学者。我正在尝试为我的移动设备网站设置断点,以便我的网站适合小屏幕。我只是想检查如果我缩小视口(viewport)的宽度,背景颜色是否会改变,但没有发生任何变化。也许我只是对一个简单的错误
举一个我想要的例子,想象一下这个字符串: $text = 'lorem ipsum About us lorem ipsum'; 如果此字符串包含一个 href 以 / 开头的 anchor 链接,则
如何链接到 LaTeX 文档的另一部分或子部分?这种链接的常规范式是什么,像[链接名称]那样写,或者像网页超链接那样写? 最佳答案 链接到另一个部分需要您的部分进行一些额外的标记。要使用的命令是: \
我有一个订单表,其中包含订单号、客户 ID 和代理 ID。然后有一个带有 id 的客户表和一个带有 id 的代理表。 我需要获取所有具有来自代理 ID 'a03' 和代理 ID 'a05' 的订单的客
假设我有: dic = {"z":"zv", "a":"av"} ## Why doesn't the following return a sorted list of keys? keys = d
我在尝试链接到外部库时得到了一些奇怪的结果。如果我从命令行运行以下命令: gcc fftwTest.c -I../extlib/fftw-3.3.5-dll32 -L../extlib/fftw-3.
我认为我没有正确理解 jQuery 链接。我正在遍历一个数组并尝试将 div 元素添加到我的包装器 CSS 类中,每个 div 元素都有一个“click”类和自定义 css top 和 left 属性
HTML 使用超级链接与网络上的另一个文档相连。几乎可以在所有的网页中找到链接。点击链接可以从一张页面跳转到另一张页面。 HTML 超链接(链接) HTML使用标签 a 来设置超文本链接。 超链
这个问题在这里已经有了答案: How do I link to part of a page? (hash?) (7 个答案) Scroll Automatically to the Bottom
我想创建一个 Docker Swarm 集群,运行一个 Elasticsearch 实例、一个 MongoDB 实例和一个 grails 应用程序,每个都在单独的机器上。我正在使用 Docker Ma
我正在尝试将 CakePHP HTML Linker 用于以下代码 Add Cuisine 由于 span 标签需要在 a 标签内。我无法根据需要获得输出。关于如何完成它的任何建议? 最佳答案 禁用链
大家好, 我最近开发了一个应用程序,很快就会提交到 App Store。我想免费提交这个应用程序,并想知道我是否可以实现一个带有 PayPal 捐赠标志的按钮,上面基本上写着“捐赠用于开发”或与此相关
我想尝试在 dlang 中使用 libuv。我下载了这样的 dlang 绑定(bind): git clone git@github.com:tamediadigital/libuv.git 现在我接
我有一个节点(节点 a),各种其他节点(节点 b/c/d/e)与之引用。 我可以创建一个带有参数的 View 作为我正在查看的节点(节点 a),并获取引用该节点的节点列表。 基本上在节点 a 查看节点
我正在尝试建立一个常见问题页面,上面有目录,下面有答案。我想点击目录中的一个问题,并在同一页面上链接到相应的答案。我如何在 CakePHP 中使用 $this->Html->link() 执行此操作方
在 WooCommerce 3.0+ 中,我使用 js 创建了一些选项卡,每个选项卡中包含来自不同类别的产品。我已经设法修改了简单产品的添加到购物车链接,其中点击了 addtocart 按钮它进入下一
Delphi 2007/2009 奇怪的问题在这里: 根据设计时定义的组件属性,是否可以在链接中包含文件或保留文件? 示例:如果我将 SomeProperty 保留为真,则在编译时,单元 SomeUn
我是一名优秀的程序员,十分优秀!