2 PUT запрос API в том же файле в NEXT js

Мне нужен совет, как решить, когда мне нужно для одного маршрута 2x PUT-запроса. Мне нужно добавить и удалить два типа входных данных, но я могу удалить один или другой. Я не могу придумать, как настроить Route.js так, чтобы можно было добавлять и удалять оба типа входных данных.

export async function PUT(request) {
const id = request.nextUrl.searchParams.get("id");
const result = await CargoDetails.findOneAndUpdate(
{
   $and: [{ _id: id }],
 },
 {
   $push: { defaultValues: { count: "", long: "", width: "", 
 weight: "", high: "" },
   },
 },{ new: true }
);
return NextResponse.json({ result }, { status: 200 });
}
 export async function PUT(request) {
 const id = request.nextUrl.searchParams.get("id");
 const result = await CargoDetails.findOneAndUpdate(
   {
     $and: [{ _id: id }],
   },
   {
     $push: {
       exwork: { cost: "" },
     },
   },
   { new: true }
 );

 return NextResponse.json({ result }, { status: 200 });
 }

Ниже вы можете увидеть мою модель для лучшего понимания:

const cargoDetailsSchema = new Schema(
  {
    defaultValues: { type: [formFields], default: undefined },
    exwork: { type: [exValue], default: undefined },
    client: String,
    sdl: String,
    price: Number,
    transport: String,
    menaFrom: String,
    menaTo: String,
  },

  { timestamps: true }
);

const CargoDetails =
  models?.CargoDetails || 
model("CargoDetails",cargoDetailsSchema);

export default CargoDetails;

defaultValues и exwork имеют собственные кнопки «плюс» и «минус» для добавления и удаления функций. Я знаю, что, возможно, это невозможно сделать таким образом. Буду благодарен за любой совет. .

Я думаю, это может быть легко: просто добавьте действие к запросу и определите, какое действие вы собираетесь выполнить, затем используйте оператор if и обработайте запрос.

NullEe 23.06.2024 07:26

Не могли бы вы предоставить простой пример кода?

Charvi 24.06.2024 17:23
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

добавьте тип действия для запроса запроса. что-то вроде этого

export async function PUT(request) {
 const id = request.nextUrl.searchParams.get("id");
 const action = request.nextUrl.searchParams.get("action");
 let result;

 if (action === "actionA") {
  result = await CargoDetails.findOneAndUpdate(
   {
    $and: [{ _id: id }],
   },
   {
    $push: {
     defaultValues: { count: "", long: "", width: "", weight: "", high: "" },
    },
   },
   { new: true },
  );
 } else if (action === "actionB") {
  result = await CargoDetails.findOneAndUpdate(
   {
    $and: [{ _id: id }],
   },
   {
    $push: {
     exwork: { cost: "" },
    },
   },
   { new: true },
  );
 } else return NextResponse.json({ message:"Action not defined!" }, { status: 400 });

 return NextResponse.json({ result }, { status: 200 });
}

Да, это работает. Это именно то, что мне нужно. Большое спасибо за вашу помощь.

Charvi 24.06.2024 21:57

Другие вопросы по теме