Мне нужен совет, как решить, когда мне нужно для одного маршрута 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
имеют собственные кнопки «плюс» и «минус» для добавления и удаления функций.
Я знаю, что, возможно, это невозможно сделать таким образом. Буду благодарен за любой совет. .
Не могли бы вы предоставить простой пример кода?
добавьте тип действия для запроса запроса. что-то вроде этого
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 });
}
Да, это работает. Это именно то, что мне нужно. Большое спасибо за вашу помощь.
Я думаю, это может быть легко: просто добавьте действие к запросу и определите, какое действие вы собираетесь выполнить, затем используйте оператор if и обработайте запрос.