【发布时间】:2013-10-26 16:55:59
【问题描述】:
我需要在允许或拒绝方法中插入或更新之前向文档添加或删除字段。我曾假设转换函数会提供所需的功能。
流星文档状态
"一个可选的转换函数。文件将通过 此函数在从 fetch 或 findOne 返回之前以及之前 被传递给观察、允许和拒绝的回调。”
每当我尝试转换并从函数返回文档时,无论是允许还是拒绝文档的转换版本都不是插入到 mongodb 中的内容。我尝试通过 2 种策略进行转型。
策略 1
var ts = new Date();
return _.extend(_.pick(doc, 'name', 'discounts', 'locations', 'url_map', 'client_updated_td', '_id'), { created_td:
ts, updated_td: ts, });
策略 2
// Discountsroutings.fields is in /lib/Discountroutings.js
Discountsroutings.fields = ['_id', 'created_td', 'updated_td', 'client_updated_td', 'name', 'discounts', 'locations', 'url_map'];
// this is in /server/discountsroutings.js var ts = new Date();
doc.created_td = ts; doc.updated_td = ts; return _.each(doc,function(value, key, list){
if(Discountsroutings.fields.indexOf(key) == -1 ){
delete doc[key];
}
});
都没有用。在这两种情况下,虽然添加了字段,但并未删除字段。
有趣的是,我在插入允许和插入拒绝中尝试了相同的两种策略,但只有策略 #2 有效。所以,现在我只是在拒绝插入/更新方法中使用 Strategy #2。工作正常,连接起来并不难。
我这样做正确吗?我想以正确的方式从收集服务器端添加或删除字段。
【问题讨论】:
标签: meteor