آموزش جاوااسکریپت انجمن ها Nodejs ذخیره اعداد فارسی مثلا قیمت کالا در MongoDb

  • این موضوع 2 پاسخ، 3 کاربر را دارد و آخرین بار در 1 سال پیش بدست b b به‌روزرسانی شده است.
در حال نمایش 3 نوشته (از کل 3)
  • نویسنده
    نوشته‌ها
  • #58309 پاسخ
    سیامک کریمی
    مشارکت کننده

    سلام من در ریکت با استفاده از دستور زیر مشخصات کالا رو وقتی قیمت کالا یا تعداد موجودی کالا رو انگلیسی می نویسم ذخیره میکنه
    const { data } = await axios.post(‘/api/create-product’, {
    …values,
    })
    ولی وقتی اعداد رو بصورت فارسی وارد میکنم
    از سمت سرور خطای زیر رو میده

    price: CastError: Cast to Number failed for value “۳۵۶۰۰۰” (type string) at path “price”

    ممنون میشم راهنماییم بفرمایید.

    #58341 پاسخ
    علی
    مشارکت کننده

    سلام وقت بخیر
    با توجه به model تعریف شده برای collection مدنظرتون باید تایپ رو convert کنید اگر بازهم مشکل وجود داشت تو دیتابیس انگلیسی ذخیره کنید جایی که می خواید نمایش بدین تبدیلش کنید به اعداد فارسی

    #58391 پاسخ
    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”

در حال نمایش 3 نوشته (از کل 3)
پاسخ به: ذخیره اعداد فارسی مثلا قیمت کالا در MongoDb
اطلاعات شما: