Добавление нескольких элементов в mongodb

#mongodb #mongoose

Вопрос:

У меня есть эта схема с

 const userSchema = new mongoose.Schema( {  skills: [{ name: { type: String, unique: true }, level: { type: Number } }],  

и я пытаюсь, получив массив объектов от клиента, добавить их все сразу под пользователем в MongoDB

моя старая реализация, когда это был всего лишь массив, приведена ниже. Я понятия не имею, как это сделать сейчас, тхо. Кто-нибудь может мне помочь?

 const { email } = session; const { skill } = req.body; if (req.method === 'POST') {  try {  const user = await User.findOne({ email });   const updatedUser = await User.findOneAndUpdate(  { email },  { skills: [...user.skills, { name: skill }] }  );  

Ответ №1:

 const { email } = session; // object from the client const { skills } = req.body; if (req.method === 'POST') {  try {   const updatedUser = await User.findOneAndUpdate(  { email },  { $set: {skills} }  );  

лучше всего правильно отформатировать массив с внешнего интерфейса, если не использовать карту перед вызовом findOneAndUpdate

Комментарии:

1. Так что я попробовал до сих пор, и я не мог управлять, чтобы распространить существующий массив, и добавить новые элементы к ней с $задано, но я нашел $addToSet зафиксировано, что по мне, так я в принципе и сделал const { skill: skills } = req.body; if (req.method === 'POST') { try { const user = await User.findOne({ email }); const updatedUser = await User.findOneAndUpdate( { email }, { $addToSet: { skills } } ); свой вариант ответа, хотя поставить меня на правильном пути, и, вероятно, есть способ сделать это с $набора, который мне не удалось найти. Спасибо

2. приятно это слышать, чувак!