gpt4 book ai didi

javascript - 向客户端发布结构化的 react 性数据(在数据库集合之外)

转载 作者:行者123 更新时间:2023-11-29 14:55:25 25 4
gpt4 key购买 nike

我正在寻找用于根据请求在 Meteor 框架中向客户端发送结构化数据的最佳解决方案。

问题:有时,在将数据从数据库发送到客户端之前,您想要添加一些服务器端生成的附加信息,这些信息将被发送到客户端(即许多对象的安全凭证)。此数据可能是时间关键的(即由于过期时间戳),因此不应存储在数据库中。此外,有时无法在客户端处理此数据(即出于安全原因)。在许多情况下,此数据在结构上与实际数据库数据相关,但也与单个请求密切相关,因为您可能希望丢弃它并在新请求时重新生成。

您可以(至少在设计上..):

  1. 创建第二个集合,在那里存储和发布您的请求相关数据,接受写入开销,然后即在 Meteor.myTemplate.destroyed=function(){...}/code> 再次删除数据,接受另一个写入开销。


  2. 将每个条目存储在 session 变量中,但是您还必须注意
    稍后删除它 (Meteor.myTemplate.destroyed=function(){...}),这是我现在最喜欢的,但我遇到了在那里存储大对象的问题。 p>


  3. 将此数据存储在 dom 中(即在隐藏或可见元素的属性或数据字段中)

  4. 使用 Meteor.call('method',arguments,callback(){...}) 通过在dom 并在 callback(){...} 中用 jQuery 注入(inject)它们。



您不能:(按设计!!)




  1. 在服务器上的 Meteor.publish("name",function(){...}) 中使用转换

  2. Template.variable=function(){return collection.find(...)} 的转换中使用 Meteor.call()(也不是如果你在客户端有对应的Meteor.method()来猜测结果!)。



同样,我正在寻找的是对此性能最好的解决方案。






最佳答案





为了解决我关心的转换问题,因为我认为是智能模型做事而不是一堆匿名函数,这里是一个服务器转换到达客户端的例子(不是响应式(Reactive)的,通过调用,不是发布,而是说明服务器转换讨论中的要点)。



你会得到这个:



each image local

data: LOLCATZ RULZ
transform:
data: LOLCATZ RULZ
transform:

each image server transformed

data: LOLCATZ RULZ
transform: XYZ
data: LOLCATZ RULZ
transform: XYZ


from:



<template name='moritz'>
<h3>each image local</h3>
<dl>
{{#each images}}
<dt>data: {{caption}}</dt>
<dd>transform: {{secretPassword}}</dd>
{{/each}}
</dl>

<h3>each image server transformed</h3>
<dl>
{{#each transformed}}
<dt>data: {{caption}}</dt>
<dd>transform: {{secretPassword}}</dd>
{{/each}}
</dl>
</template>

if (Meteor.isServer) {

Images = new Meteor.Collection('images', {
transform: function (doc) {
doc.secretPassword = 'XYZ'
return doc
}
});

Images.allow({
insert: function (userid, doc) {
return true;
}
});

if (Images.find().count() < 1) {
Images.insert({ caption: 'LOLCATZ RULZ'});
}

Meteor.publish('images', function () {
return Images.find();
})

Meteor.methods({
'transformed': function() {
return Images.find().fetch();
}
})
}
else {
Images = new Meteor.Collection('images');

imageSub = Meteor.subscribe('images');

Template.moritz.helpers({
'images': function () {
console.log(Images.find().count() + ' images')
return Images.find();
},
'transformed': function () {
// Should be separated, call should be in route for example
Meteor.call('transformed', function(err,data){
Session.set('transformed', data);
});
return Session.get('transformed');
}
});
}

关于javascript - 向客户端发布结构化的 react 性数据(在数据库集合之外),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18584757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com