Обновление массива MongoDb $ addToSet после двойной отправки - PullRequest
0 голосов
/ 02 января 2019

У меня есть React-redux-форма для добавления мест пользователю.Данные отправляются с помощью axios, а полученное обновление записывается в консоль.

export const savePlaceToUser = (place, user) => async dispatch => {
  let saved = {};
  saved.userId = user._id;
  saved.placeId = place._id
  const res = await axios.put('/api/place/save', saved);
  console.log(res.data.savedPlace);
}

Экспресс-маршрут JS выглядит следующим образом.

const mongoose = require('mongoose');
const User = mongoose.model('users');

app.put('/api/place/save', (req, res)=>{
  User.findByIdAndUpdate(req.body.userId, {
    "$addToSet" : { savedPlace: req.body.placeId}
  }, (err, user)=>{
    err ? res.send(err) : res.send(user)
  })
})

А вот и пользовательская модель.

const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
  googleId:String,
  userName:String,
  userDp:String, 
  savedPlace: [{ type: mongoose.Schema.Types.ObjectId, ref: "Place" }]
});

mongoose.model('users', userSchema);

При первой отправке сохраненный_пакет без обновления.При втором отправлении массив обновляется.

...