کد بوی 253 – بدون اخطار داده های کاربر خود را به صورت بی صدا کوتاه می کند

شما بی صدا داده های کاربر خود را بدون هشدار کوتاه می کنید

TL;DR: اگر طول متن را محدود می کنید، آنها را در همه جا اعمال کنید!

چالش ها و مسائل

  • نقض اصل سریع شکست
  • داده های خراب و از دست رفته
  • خطای بیجکشن
  • برش UTF-8
  • نقض اصل کمترین شگفتی
  • جداسازی نگرانی های رابط کاربری و مدل

راه حل ها

  1. با قوانین طول سازگار باشید
  2. قوانین را در اشیاء دامنه اجرا کنید

متن نوشته

سناریویی را تصور کنید که در آن باید اشیاء خود را در یک پایگاه داده باقی بمانید که اندازه متون شما را محدود می کند.

اکثر پایگاه های داده به صورت بی صدا داده های شما را کوتاه می کنند و تا زمانی که آنها را بازیابی نکنید متوجه مشکل نخواهید شد.

اگر نیاز به اجرای یک محدودیت دلخواه دارید، این قوانین تجاری را به دنبال قانون bijection به اشیاء خود اضافه کنید.

افزودن این کنترل فقط در UI یا API خارجی بوی کد دیگری در مورد مسئولیت های نادرست است.

کد نمونه

اشتباه

const express = require('express');
const app = express();
const bodyParser = require('body-parser');

// The page architecture is over simplified
const db = require('./db');

app.use(bodyParser.urlencoded({ extended: true }));

app.post('/save-data', (req, res) = {
  const fullText = req.body.fullText;
  const truncatedText = fullText.slice(0, 255);
  // This truncation is not explicit sometimes  

  db.query('INSERT INTO table_name...

Source link