西班牙语字符不规则地以非 utf-8 字符保存在 MongoDB 中 (�)

问题描述 投票:0回答:1

似乎突然之间,我们开始注意到“ñ”、“¿”或“é”等非传统字符被保存为非 utf-8 字符“�”。

我们恢复了前端和后端的早期版本,问题仍然存在,显然是通过新代码提交消除了问题。

如果我们在本地运行,没有任何问题。

当我们部署一个版本时,它似乎可以工作一段时间,直到我们刷新或尝试使用不同的浏览器,此时它会失败,并且似乎会破坏流程中的某些内容,并从此失败。

我们的实例化和查询非常简单:

mongoose
    .set("strictQuery", false)
    .connect(config.MONGO_DB_URI, {
      enableUtf8Validation: true, // We initially didn't have this and the back end crashed, now it doesn't but it simply show the corrupted characters.
    })

export const PostDBModel = mongoose.model<PostDB>("Post", postSchema);

const updatePost = await PostDBModel.findOneAndUpdate(
      { _id: _id },
      { title, content, category, tags },
      { new: true }
    );

我们的堆栈:

  • React.js 在前端,通过 graphQL 集成,使用 Apollo 客户端和服务器进行前端和后端通信
  • Node.js 在后端与 Typescript
  • MongoDB 作为 DBMS,mongoose 作为 ODM

这可能是什么原因?

mongodb mongoose heroku utf-8 graphql
1个回答
0
投票

这是由 Node 22.7.0 中的错误引起的。您需要降级,最好降级到 LTS 版本 20.x,而不是 22.x。 请参阅:https://github.com/nodejs/node/issues/54543

© www.soinside.com 2019 - 2024. All rights reserved.