如何在一个请求中在 Mongoose 中创建多个文档

How to create multiple documents in Mongoose in one request

如何在 Node/Mongoose/Express 中的一个 REST API 请求中创建具有不同架构的多个文档?

例如,我需要在单个请求中创建一个用户和一个站点,例如 /createUser

我当然可以创建一个用户,然后在返回的承诺中创建下一条记录,但是如果第二条记录不符合验证怎么办?然后我创建了一个没有第二条记录的用户。

User.create(userData)
    .then(user => {
        Site.create(siteData)
            .then(site => {
                // Do something
            })
            .catch(err => {
                console.log(err)
                // If this fails, I'm left with a user created without
                // a site.
            })
    })
    .catch(err => {
        console.log(err)
    })

像这样创建多个文档时有什么好的做法可以遵循吗?我应该 运行 在每个 .create() 运行 之前手动验证吗?任何 guidance/advice 将不胜感激!

您这里有交易问题。您正在尝试写入两个不同的模型,但希望整个操作是原子的,如果其中任何一个失败,您需要回滚。在 mongo 之前,mongo 不支持 4.0 事务,解决这些排序问题的方法是 two phased commits. Now in mongo 4.0 we have transactions 来解决此类问题。

希望对您有所帮助。