处理流星集合中可变的键值对(无模式困境)

Handling changeable key value pairs in meteor collections (schemaless dilemma)

本文关键字:模式 困境 键值对 集合 流星 处理      更新时间:2023-09-26

如何解决问题,当一些键:值对在您的.insert语句是可选的(因此您的键:值对改变所有的时间),而它正在循环内执行(我从表中读取数百行)?

由于我在集合中只有6个必选字段和6个可选字段,我不确定如何才能优雅地编码它,以便我不必将空值插入到集合中。有6个可选字段,我有(如果我的数学是正确的)36种不同的组合,我必须在if子句中处理,不是很实用。这是无模式MongoDB创建的一个困境(除非我想浪费空间并在我的文档中具有许多空值的键:值对)。

我已经尝试使用与键:值对连接的字符串作为参数。这在.insert命令(syntax error)中是不允许的,因为meteor期望{ key1:value1, key2:value2 }结构。

我可以一次输入所有的key:value对,然后触发多达6个$unset从文档中再次删除这些字段,但这并不是一个实际的解决方案(因为它将创建大量的I/O操作,而实际上应该只有1个I/O操作)。

有什么建议吗?如何解决流星中可变键值对的问题?提前感谢您的帮助!

insertedObject = {}
insertedObject[“price”] = itemPrice;
insertedObject[“name”] = itemName;
if (!! itemNote ) { 
  insertedObject["note"] = itemNote ; 
}
Products.insert(insertedObject);

与出版物中的选择器/投影相同,其中有可选参数等

您的代码应该将对象创建为object literal。

var obj1 = {foo:"1", bar:"2"}
var obj2 = {foo:"3"} // no bar
然后你让Mongo插入对象
collection.insert(obj1);
collection.insert(obj2);