2013-04-30 35 views
24

Tôi muốn xác định chiều dài của một kiểu dữ liệu trong phần tiếp theo. Có mã nguồn của tôi:Làm cách nào để xác định chiều dài Sequelize.STRING?

var Profile = sequelize.define('profile', { 
    public_id: Sequelize.STRING, 
    label: Sequelize.STRING 
}) 

Nó tạo một hồ sơ bảng với public_id với một varaty datatype (255).

Tôi muốn xác định public_id bằng varchar (32).

Tôi đã tìm kiếm trên tài liệu và ngăn xếp nhưng không tìm được câu trả lời ...

Làm cách nào để tôi làm điều đó?

Trả lời

5

Trước tiên, tôi nghĩ bạn cần suy nghĩ lại về thiết kế của mình một chút. Điểm cơ bản là các ràng buộc về độ dài nên có ý nghĩa, không chỉ ở đó để tiết kiệm không gian. PostgreSQL không lưu trữ 'A' :: varchar (10) khác với văn bản 'A' :: (cả hai được lưu trữ dưới dạng chuỗi văn bản có độ dài thay đổi, miễn là giá trị được lưu trữ, cùng với chỉ số độ dài và một số khác siêu dữ liệu), vì vậy bạn nên sử dụng kích thước dài nhất có thể hoạt động cho bạn và sử dụng độ dài để thực thi nội dung thay vì tiết kiệm dung lượng. Khi nghi ngờ, đừng ép buộc. Khi bạn cần phải chắc chắn rằng nó phù hợp trên một nhãn gửi thư, hạn chế một cách thích hợp.

Thứ hai câu trả lời Dankohn của trên:

var Profile = sequelize.define('PublicID', { 
    public_id: { 
    validate: { len: [0,32] }) 

là cách bạn sau đó sẽ thêm thi đó cho front-end. Một lần nữa, việc thực thi đó phải dựa trên những gì bạn biết bạn cần, không chỉ là ý tưởng hay vào thời điểm đó, và trong khi nói chung là dễ dàng hơn để hạn chế các ràng buộc hơn là thắt chặt chúng, với chiều dài chuỗi, nó thực sự không có trí tuệ làm mọi thứ theo cách khác.

Đối với việc sử dụng như vậy trong các ứng dụng khác, bạn có thể muốn tra cứu thông tin ràng buộc trong danh mục hệ thống, điều này sẽ đưa bạn vào loại lãnh thổ nâng cao.

32

Vì nó được đề cập trong documentation, sử dụng:

Sequelize.STRING(32) 
Các vấn đề liên quan