آموزش جاوااسکریپت › انجمن ها › Nodejs › ذخیره اعداد فارسی مثلا قیمت کالا در MongoDb
- این موضوع 2 پاسخ، 3 کاربر را دارد و آخرین بار در 2 سال، 2 ماه پیش بدست b b بهروزرسانی شده است.
-
نویسندهنوشتهها
-
سیامک کریمیمشارکت کننده
سلام من در ریکت با استفاده از دستور زیر مشخصات کالا رو وقتی قیمت کالا یا تعداد موجودی کالا رو انگلیسی می نویسم ذخیره میکنه
const { data } = await axios.post(‘/api/create-product’, {
…values,
})
ولی وقتی اعداد رو بصورت فارسی وارد میکنم
از سمت سرور خطای زیر رو میدهprice: CastError: Cast to Number failed for value “۳۵۶۰۰۰” (type string) at path “price”
ممنون میشم راهنماییم بفرمایید.
علیمشارکت کنندهسلام وقت بخیر
با توجه به model تعریف شده برای collection مدنظرتون باید تایپ رو convert کنید اگر بازهم مشکل وجود داشت تو دیتابیس انگلیسی ذخیره کنید جایی که می خواید نمایش بدین تبدیلش کنید به اعداد فارسیb bمشارکت کنندهسلام
استاد من در دوره node.js شما که نگاه کردمُ شما مثلا در فیلم ادیت کردن کورس قیمت رو به انگلیسی 100 وارد کردین
بهمین خاطر من نمیدونم نحوه درست ذخیره کردن اعداد فارسی در mongoDb چطوره
مثلا
۱. وقتی input type=text میدم امکان تایب کردن اعداد فارسی با کیبورد استاندارد هست ولی وقتی type=number میکنم دیگه input عدد فارسی نمیگیره
۲. وقتی از ریکت با initial value یا کیبورد استاندارد فارسی یک عدد فارسی مانند قیمت کالا رو به server با const { data } = await axios.post(‘/api/create-product’, {…values,}) میفرستم
خطای زیر رو میدهError: Product validation failed: price: Cast to Number failed for value “۱۲۳۰۰۰” (type string) at path “price”, quantity: Cast to Number failed for value “۱۸” (type string) at path “quantity”
at ValidationError.inspect (D:\DigiHealthNext34\server\node_modules\mongoose\lib\error\validation.js:47:26)
at internal/per_context/primordials.js:23:32
at formatValue (internal/util/inspect.js:783:19)
at Object.inspect (internal/util/inspect.js:337:10)
at Object.Ps (D:\DigiHealthNext09\server\node_modules\esm\esm.js:1:197271)
at Object._s (D:\DigiHealthNext09\server\node_modules\esm\esm.js:1:197659)
at Object.<anonymous> (D:\DigiHealthNext09\server\node_modules\esm\esm.js:1:199551)
at Object.apply (D:\DigiHealthNext09\server\node_modules\esm\esm.js:1:199341)
at Object.[nodejs.util.inspect.custom] (D:\DigiHealthNext09\server\node_modules\esm\esm.js:1:203936)
at internal/per_context/primordials.js:23:32
at formatValue (internal/util/inspect.js:783:19)
at inspect (internal/util/inspect.js:337:10)
at formatWithOptionsInternal (internal/util/inspect.js:2016:40)
at formatWithOptions (internal/util/inspect.js:1898:10)
at console.value (internal/console/constructor.js:323:14)
at console.log (internal/console/constructor.js:358:61) {
errors: {
price: CastError: Cast to Number failed for value “۱۲۳۰۰۰” (type string) at path “price”
at SchemaNumber.cast (D:\DigiHealthNext34\server\node_modules\mongoose\lib\schema\number.js:373:11)
at SchemaNumber.SchemaType.applySetters (D:\DigiHealthNext34\server\node_modules\mongoose\lib\schematype.js:1123:12)
at model.$set (D:\DigiHealthNext34\server\node_modules\mongoose\lib\document.js:1279:20)
at model.$set (D:\DigiHealthNext34\server\node_modules\mongoose\lib\document.js:1023:16)
at model.Document (D:\DigiHealthNext34\server\node_modules\mongoose\lib\document.js:148:12)
at model.Model (D:\DigiHealthNext34\server\node_modules\mongoose\lib\model.js:105:12)
at new model (D:\DigiHealthNext34\server\node_modules\mongoose\lib\model.js:4706:15)
at create (D:\DigiHealthNext38\server\controllers\product.js:28:27)
at Layer.handle [as handle_request] (D:\DigiHealthNext34\server\node_modules\express\lib\router\layer.js:95:5)
at next (D:\DigiHealthNext34\server\node_modules\express\lib\router\route.js:137:13)
at isSeller (D:\DigiHealthNext34\server\middlewares\index.js:16:7)
at runMicrotasks (<anonymous>)
at processTicksAndRejections (internal/process/task_queues.js:93:5) {
stringValue: ‘”۱۲۳۰۰۰”‘,
messageFormat: undefined,
kind: ‘Number’,
value: ‘۱۲۳۰۰۰’,
path: ‘price’,
reason: AssertionError [ERR_ASSERTION]: false == true
at castNumber (D:\DigiHealthNext34\server\node_modules\mongoose\lib\cast\number.js:28:10)
at SchemaNumber.cast (D:\DigiHealthNext34\server\node_modules\mongoose\lib\schema\number.js:371:12)
at SchemaNumber.SchemaType.applySetters (D:\DigiHealthNext34\server\node_modules\mongoose\lib\schematype.js:1123:12)
at model.$set (D:\DigiHealthNext34\server\node_modules\mongoose\lib\document.js:1279:20)
at model.$set (D:\DigiHealthNext34\server\node_modules\mongoose\lib\document.js:1023:16)
at model.Document (D:\DigiHealthNext34\server\node_modules\mongoose\lib\document.js:148:12)
at model.Model (D:\DigiHealthNext34\server\node_modules\mongoose\lib\model.js:105:12)
at new model (D:\DigiHealthNext34\server\node_modules\mongoose\lib\model.js:4706:15)
at create (D:\DigiHealthNext38\server\controllers\product.js:28:27)
at Layer.handle [as handle_request] (D:\DigiHealthNext34\server\node_modules\express\lib\router\layer.js:95:5) at next (D:\DigiHealthNext34\server\node_modules\express\lib\router\route.js:137:13)
at isSeller (D:\DigiHealthNext34\server\middlewares\index.js:16:7)
at runMicrotasks (<anonymous>)
at processTicksAndRejections (internal/process/task_queues.js:93:5) {
generatedMessage: true,
code: ‘ERR_ASSERTION’,
actual: false,
expected: true,
operator: ‘==’
},
valueType: ‘string’
},
quantity: CastError: Cast to Number failed for value “۱۸” (type string) at path “quantity” -
نویسندهنوشتهها