Meteormongo:跨集合同步字段
Meteor mongo: sync fields across collections
我有一个这样的会议文档:
{
"name":"Meeting Name",
"uuid":"NYoc2aL6",
"participants":[
{
"id":"JLKGZnfFkGvX9DHgz",
"status":"joined",
"name":"Guest 03"
},
{
// newly invited user, user hasn't logged in with invite url yet
"id":"",
"status":"invited",
"name":"email@email.com"
}
]
}
并且我需要将"name"字段与Users集合中的名称同步。有没有一种自动的方法可以做到这一点,比如在数据库级别,或者我在每个更改名称的地方都要手动更新?
这是Meteor中非常常见的模式。您可以使用matb33:collection hooks包来"挂钩"集合更新以同步共享值。当然,这应该在服务器端完成,这样您就不必担心某些相关文档不可用。
示例:
Meteor.users.after.update((userId, doc, fieldNames, modifier, options)=>{
if ( fieldNames.indexOf('profile.name') > -1 ){ // the name was changed
Meetings.update({ 'participants.id': doc._id },
{ $set: { 'participants.name': doc.profile.name }},
{ multi: true });
}
});
据我所知,在Mongo或Meteor中没有"自动"的方法。但是,为什么不将常见字段从文档中删除,只链接ID呢?这被称为"数据库规范化",这是一个从表(Mongo中的集合)中删除冗余数据以防止此类问题的过程。
这可以通过观察用户数据库的变化来"自动"完成:
var usersCursor = Meteor.users.find();
usersCursor.observeChanges({"changed":function(id, fields){
if(fields.profile.name){
... do whatever needs to be done ...
}
}});
相关文章:
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 而循环只设置php中输入字段中的第一个值
- 在输入字段中将最小金额设置为
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 如何在输入字段中的按钮的帮助下打开日历,该字段的类型为“=”;日期”;
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- 在wordpress一定时间后更改自定义字段
- 如何在HTML输入字段中添加不可删除的后缀
- Meteor-添加用户自定义字段的方法不起作用
- 互斥单选按钮和相应的输入字段
- 在IE9中的输入字段中输入焦点最近按钮
- 选中单选框时将属性添加到输入字段
- 带有验证和隐藏字段值的提交按钮
- 同步读取package.json中的自定义字段
- 如何在 MathQuill 0.10 中同步文本字段和公式字段内容
- Rails|Javascript同步多个字段,避免无限循环
- Meteormongo:跨集合同步字段
- 如何添加与我的按钮同步的多个字段?
- 流星用户不同步已发布的配置文件子字段
- 以编程的方式向angularfire添加字段,并与Firebase同步