سلام خسته نباشید ...
من یه پروژه فروشگاهی دارم که کاربر این امکان رو داره محصولات رو بوکمارک کنه
واین بوکمارت تو اطلاعات مربوط به دیتای یوزر ذخیره میشه (زمانی که عمل ذخیره انجام میشه فقط آیدی مربوطه رو ذخیره نمیکنه تمام دیتاهای مربوط به محصول ذخیره میشه)
الان که تست کردم یه محدودیتی داره که بیشتر از مثلا 50 محصول کاربر نمیتونه بوکمارک کنه
از MongoDB و بک اند Nodejs و فرانت reactjs دارم استفاده میکنم
تمام کدهامو بررسی کردم هم بک اند و هم فرانت اما مشکلی نتونستم پیدا کنم
چیکار کنم که محدودیتی برای بوکمارک وجود نداشته باشه؟
Api یوزر.......
import { useState, useEffect } from "react";
import Instance from "./InstanceApi"
function UserAPI(token) {
const [isLogged, setIsLogged] = useState(false);
const [isAdmin, setIsAdmin] = useState(false);
const [bookmark, setBookmark] = useState([]);
const addBookmark = async (product) => {
const check = bookmark.every((item) => {
return item._id !== product._id;
});
if (check) {
setBookmark([...bookmark, { ...product, quantity: 1 }]);
await Instance({
url: "/user/addBookmark",
method: "PATCH",
data: { bookmark: [...bookmark, { ...product, quantity: 1 }] },
headers: { Authorization: token }
})
} else {
}
};
return {
isLogged: [isLogged, setIsLogged],
isAdmin: [isAdmin, setIsAdmin],
bookmark: [bookmark, setBookmark],
addBookmark: addBookmark,
};
}
export default UserAPI;کلی دربارش سرچ زدم و مطالعه کردم همه یه چیزو میگن که توی express و node js که درخواست json میزنی حداکثر 100 کیلوبایت میتونه دیتا رد و بدل بشه اگه دیتا از این حجم بیشتر بشه حتی 1 کیلوبایت اررور 413 رو بر میگردونه که میشه همون too large که میگن باید حجمش رو افضایش بدی مشکل حل میشه ببینید برای express نسخه 3 و 4 یه خورده متفاوت هست نسخه express رو چک کن بر اساس اون این کد هایی که میزارم رو با دقت بزار تو پروژه
const express = require('express');
const bodyParser = require('body-parser');
// Express 4.0
app.use(bodyParser.json({ limit: '10mb' }));
app.use(bodyParser.urlencoded({ extended: true, limit: '10mb' }));
// Express 3.0
app.use(express.json({ limit: '10mb' }));
app.use(express.urlencoded({ limit: '10mb' }));
که به احتمال زیاد از express 4 استفاده میکنی با این دستور میتونی ورژن express رو دربیاری
npm list expressشاید پاسخ شما همینجا باشد
@Pouyab
بک اند و فرانت تو هر دوش ست شدن
کلا تمامی قسمت ها درست عمل میکنه ولی وقتی کاربر بیش از 50 محصول رو به لیستش اضافه میکنه این خطا و دریافت میکنه
نمیدونم دقیقا چطور باید درستش کنم😥
سلام وقت بخیر
باید یه میدلور بنویسی که بیاد یه سری هدر به درخواست هات اضافه کنه ببین با این کار مشکلت حل میشه یا نه
// اضافه کردن این کد ها به هدر قبل از ارسال درخواست
app.use(function (req, res, next) {
// وبسایتی که میخواهی به اون اجازه اتصال بدی
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8888');
// درخواست هایی که میخوای اجازه داشتن باشن
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});
این کد رو اضافه کن ببین با این اجازه دسنرسی ها بازم اررور توی عکس رو میگیری یا نه
@FullStack
سلام ممنون از شما
این کد رو هم که اضافه کردم بازم ارور 413 از بین نرفت

میدلورهای من
// middlewares
app.use(morgan("dev"));
app.use(bodyParser.json());
app.use(cookieParser());
app.use(expressValidator());
app.use(cors(corsOptions));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(helmet());
app.use(compression());
app.use(session({
name: "cookie",
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: true,
}));ممنونم درست شد
فقط یه سوالی برام پیش اومده
من از اکسپرس 4 استفاده میکنم و میدلوری که دارم الان به اینصورته و شما گفتید برای اکسپرس 3 به اون صورت باید نوشت
urlencoded رو هم باید به بادی پارسر تغییرش بدم یا نمیخواد؟
app.use(morgan("dev"));
app.use(bodyParser.json({limit: '10mb'}));
app.use(cookieParser());
app.use(expressValidator());
app.use(cors(corsOptions));
app.use(express.json({limit: '10mb'}));
app.use(express.urlencoded({ extended: false, limit: '10mb', parameterLimit: 100000})); //endcoded رو هم باید به بادی پارسر تغییرش بدم یا نمیخواد؟
app.use(helmet());
app.use(compression());
app.use(session({
name: "cookie",
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: true,
}));
ممنونم که وقت گذاشتید❤️