【发布时间】:2018-07-29 14:29:55
【问题描述】:
我遇到了一个非常奇怪的 mongoose 错误 - 每次我尝试保存大量数字(在本例中为 76561198063200687)时,mongoose 或 mongodb 都会错误地保存整数。
例如,当我调用SomeModel.findOneAndUpdate({name: "Pietrov"}, {userid: 7656119806320068**7**}) 时,字段userid 正在更新为76561198063200688。
更奇怪的是,当我 now (SomeModel.findOne({name: "Pietrov"})) 为同一个文档调用 findOne 时,用户 ID 为 76561198063200690 - 差了两个(已经错了) , 一个单独的用户 ID)。
有人可以帮我解决这个奇怪的问题吗?
我使用的是 mongoose 5.2,尽管我在早期版本 (5.x) 中体验到了相同的效果。
【问题讨论】:
-
您能否提供更多信息...例如您可能已配置的 mongoose/mongoDB 架构/钩子等?
-
请注意您关闭this question 的原因,因为我们可以在那里进一步讨论。所有多用户数据库都具有可用于防止竞争条件的功能。例如,如果你想为一个不存在的 id 添加一条记录,这是一个特定的操作,数据库将能够在一次数据库调用中自动执行。我不知道您的具体数据库,因此您必须对该主题进行一些研究。
-
而且,集群的情况更糟,因为这为竞争条件创造了更多机会(更多的服务器都在竞争修改同一个数据库)。
-
对不起,我已经取消删除帖子了!随时在那里再次发布您的 cmets。也很重要。我正在使用 postgres,但还没有找到一种方法可以在单个查询中完全满足我的要求。我很想(错误地)为此使用交易,但担心这是一种糟糕的方式来做我想做的事情。