有没有办法向集合中添加或注入一个额外的或新的字段,然后能够在客户端访问该新插入的字段并将其显示在模板上或访问它而不影响服务器端?我不想在API或数据库中妥协,因为它只是一些东西,比如客户总共有8次交付。
我正在编写这个代码,我正在订阅一个集合,然后尝试在客户端更新集合,但显然我没有权利更新它:
Meteor.subscribe("all_customers", function () {
Customer.find({}).forEach(function(data) {
var delivery_count = Delivery.find({ customerID: data._id }).count();
Customer.update( { _id: data._id } , { $push: { deliveries: delivery_count } } );
});
}),
然后执行此操作,我会尝试通过插入新的键值对来操作集合,但在发送时它不会显示或根本不显示:
Meteor.subscribe("all_customers", function () {
Customer.find({}).forEach(function(data) {
var delivery_count = Delivery.find({ customerID: data._id }).count();
data.deliveries = delivery_count;
});
}),
我的主要目标是基本上能够在不影响API或数据库的情况下对EasySearch包中的交付计数进行排序,但包只对现有字段进行排序。或者有没有办法单独使用包?
请原谅我,如果这个问题可能听起来很愚蠢,但我希望有人可以提供帮助。
答案 0 :(得分:0)
完全有可能,因为您可以使用此处所述的低级出版物:https://docs.meteor.com/api/pubsub.html
你有2个解决方案,一个标准,另一个hacky:
transform
。您的服务器数据不受影响,您可以从订阅中增强数据(甚至是连接)。它很酷但你不能把它推得太远,因为它可能会碰撞并与同一页面上同一集合的另一个出版物发生冲突。解决方案在这里得到了很好的解释:How to publish a view/transform of a collection in Meteor?