Как откатить mongodb с помощью mongoose - PullRequest
1 голос
/ 19 июня 2020

У меня есть массив, как показано ниже.

const array = 
[
  { name: 'Tom',
    age: '30'
  },
  { name: 'Sam',
    age: '24'
  }
]

И я создаю этот массив, используя mon goose.

Schema.create(array)

"имя" и "возраст" обязательны. Следовательно, в этом случае они созданы правильно.
Но когда я помещаю этот массив,

const array = 
[
  { name: 'Tom',
    age: '30'
  },
  { name: 'Sam'}
]

Том создается, а Сэм не создается, так как он не имеет значения возраста.
Когда у одного из них есть ошибка во время создания, я не хочу вообще ничего сохранять.
Это потому, что «передний клиент» должен снова попытаться вставить при получении ответа об ошибке.
Как я могу управлять транзакцией с помощью mon go а пн goose? Спасибо, что прочитали.

1 Ответ

0 голосов
/ 19 июня 2020

Вы можете создать Schema model для этого и добавить к нему required:

var mongoose = require('mongoose')
const Schema = mongoose.Schema

const myUserSchema = new Schema ({
    users : [{
        name: {
            type: String,
            required: true
        },
        age: {
            type: String,
            required: true
        }
    }]
})
var myUser = mongoose.model('myUser', myUserSchema)

Затем:

const array = 
[
  { name: 'Tom',
    age: '30'
  },
  { name: 'Sam'}
]

const newUser = new myUser({
  users: array
})
newUser.save((err, user)=>{
 if (err) {
   console.log(err)
 }
})

Он должен проверить ваш массив в то время, когда вы попробуйте сохранить его и выдать ошибку, если чего-то не хватает.

Пример выданной ошибки:

ValidationError: myUser validation failed: users.1.age: Path `age` is required
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...