Javascript Mongoose在插入前更改字段名

Javascript Mongoose在插入前更改字段名,javascript,node.js,mongodb,mongoose,mongoose-schema,Javascript,Node.js,Mongodb,Mongoose,Mongoose Schema,我有一个这样的模式 const UserSchema = new Schema({ first_name: "john", last_name: "doe" }) 在我的api路由上,我将接收响应体中的数据,如 request.body = { firstName: "john", lastName: "doe" } 在将有效负载字段从camelcase更改为下划线后,我希望实现对mongodb的插入

我有一个这样的模式

const UserSchema = new Schema({
 first_name: "john",
 last_name: "doe"
})
在我的api路由上,我将接收响应体中的数据,如

request.body = {
  firstName: "john",
  lastName: "doe"
}
在将有效负载字段从camelcase更改为下划线后,我希望实现对mongodb的插入

我无法更新模式或Api规范的大小写。 在数据库性能方面,是否有我可以实现的不太昂贵的解决方案

我进行了一般性的查找,找到了关于
pre('save')
的信息,但这需要更多的编码,并且需要通过代码对整个对象进行操作

插入后更新也不是什么好办法

我目前正在使用mongoose save for insert。
我可以切换到
updateMany
insertMany
(使用upsert:true)或任何其他插入方法

您只需将请求负载映射到所需的mongo文档结构:

app.post('/add-user', async (req, res) => {
  await User.create({ first_name: req.firstName, last_name: req.lastName });
  // ...
});

这难道不像再次手动重新创建对象吗?。我确实有插入和更新操作,在这种情况下,我可能需要编写两次…我希望在get中使用一些更通用的方法,例如我正在使用聚合,其中我有一个用户模式{firstName:$first_name}的公共对象映射是否有可能在所有映射CURD操作中重用一个公共对象?如果将其提取到映射器函数中,并将此函数用于更新和插入处理程序,则必须只写入一次。我不知道是否有办法通过猫鼬做到这一点。