Tag: 不变性

如何在MongoDB中创build一个字段不可改变?

用例:我正在使用MongoDB(和Flask)写一个后端。 目前,这并没有使用像Mongoose / Mongothon这样的ORM。 我想将创build每个文档的用户的_id存储在文档中。 我希望在创build之后不可能修改该字段。 后端当前允许使用(本质上) collection.update_one({"_id": oid}, {"$set": request.json})进行任意更新。 我可以从request.json中过滤出_creator_id字段(类似于del request.json["_creator_id"] ),但是我担心这并不能覆盖所有可能的修改语法的方法来使字段变成更新(嗯,点符号?)。 理想情况下,我想要一种在MongoDB中自己编写一次字段的方法,但是如果没有这个方法,那么可以采用一些防止代码中字段更新的方法。

如何获得几个immutable.js列表的联合

所以,我列出了一个: let a = Immutable.List([1]) 和列表b: let b = Immutable.List([2, 3]) 我想从他们得到列表union === List([1, 2, 3]) 。 我试图合并他们的拳头: let union = a.merge(b); // List([2, 3]) 看起来像merge方法操作与索引,而不是值,所以重写List a的第一个项目与List b第一个项目。 所以,我的问题是什么是最简单的方式来获得几个列表的联合(理想情况下,没有迭代他们和其他额外的操作)。

有没有一种方法Object.freeze()的JavaScriptdate?

根据MDN Object.freeze()文档 : Object.freeze()方法冻结一个对象:也就是说,阻止新的属性被添加到它; 防止现有的属性被删除; 并防止现有属性或其可枚举性,可configuration性或可写性被更改。 实质上,该对象是有效的不可变的。 该方法返回被冻结的对象。 我期待在一个date冻结呼叫将阻止该date的变化,但它似乎并没有工作。 这就是我在做什么(运行Node.js v5.3.0): let d = new Date() Object.freeze(d) d.setTime(0) console.log(d) // Wed Dec 31 1969 16:00:00 GMT-0800 (PST) 我会期待的调用setTime要么失败,要么什么都不做。 任何想法如何冻结date?