Предотвратить повторяющиеся значения в приложении CRUD - PullRequest
0 голосов
/ 27 апреля 2018

Существует простое приложение CRUD (BE express и FE response-redux), в котором значения форм добавляются в mongodb, схема ниже:

import mongoose from 'mongoose';

var Schema = mongoose.Schema({
  createdAt:{
    type: Date,
    default: Date.now
  },
  carNumber: { type : String , index: { unique: true }},
  carOwner: String
});

export default mongoose.model('Car', Schema);

index: { unique: true } предотвращает добавление одинаковых carNumber значений путем вывода error

Автомобили выбираются с функцией диспетчера в carActions.js:

//Async action
export const fetchCars = () => {
  // Returns a dispatcher function
  // that dispatches an action at later time
  return (dispatch) => {
    dispatch(fetchCarsRequest());
    // Returns a promise
    return fetch(apiUrl)
      .then(response => {
        if (response.ok) {
          response.json().then(data => {
            dispatch(fetchCarsSuccess(data.cars, data.message));
          })
        }
        else {
          response.json().then(error => {
            dispatch(fetchCarsFailed(error));
          })
        }
      })
  }
}

и отображается в Cars компоненте:

render() {
    const carState = this.props.mappedCarState;
    const cars = carState.cars;
return (

<tbody>
      {cars.map((car, i) => <tr key={i}>
         <td>{car.carNumber} {car.carOwner}</td>
         <td><Button onClick={() => this.deleteCar(car)} ></Button></td>         
   </tr>)
</tbody>
}

Я очень новичок в этом типе проводки, может кто-нибудь подсказать, как мне следует предотвратить ошибку и вернуть уведомление?

Я мог бы пропустить важную информацию, вот ссылка на респ.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Вы должны создать индекс unique для carNumber в вашей схеме.

Это гарантирует, что в коллекцию не будут добавлены повторяющиеся значения для carNumber

 carNumber: { type : String , index: { unique: true }}
0 голосов
/ 27 апреля 2018

Вы должны рассмотреть индексирование carNumber, которое гарантирует, что MongoDB предотвратит повторяющиеся значения в поле.

db.<collection name>.createIndex({carNumber:1},{unique:true})
...