2017-05-09 21 views
7

Tôi đang viết dịch vụ của mình để cập nhật hàng bằng cách sử dụng phần tiếp theo cho PostGres. Khi tôi thử truy vấn của tôi sử dụng một PSequel nó hoạt động tốt:Cách .update() giá trị NULL trong phần tiếp theo

UPDATE "test_table" SET "test_col"=NULL WHERE "id"= '2' 

Nhưng sử dụng sequelize nó ném một lỗi 500:

db.TestTable.update({ testCol: NULL }, { where: { id: id } }) 
    .then((count) => { 
    if (count) { 
     return count; 
    } 
    }); 

Mô hình của tôi không allowNull mà tôi tin là những gì cho phép các giá trị null được mặc định cũng như được đặt:

testCol: { 
    type: DataTypes.INTEGER, 
    allowNull: true, 
    defaultValue: null, 
    field: 'test_col' 
}, 

Bất kỳ giá trị nào khác nhưng NULL hoạt động như mong đợi. Có một phương pháp khác để thiết lập các giá trị null không?

+0

lạ, có vẻ như các cấu trúc cột không có vấn đề đối với tôi – Beginner

+0

nơi: { id: id } cho id quảng cáo không có 2 hoặc định nghĩa nó – sunil

+0

Sunil - Tôi đã làm điều đó trước. Việc tìm hàng chính xác để cập nhật không phải là vấn đề ngay lúc này vì tôi có thể cập nhật nó lên bất kỳ giá trị nào khác nhưng không có giá trị. – jerrylow

Trả lời

5

Từ giao diện của nó, tôi nghĩ rằng vấn đề của bạn là bạn đang sử dụng cú pháp SQL cho một giá trị null ('NULL'), nơi bạn nên sử dụng cú pháp JS ('null').

db.TestTable.update({ testCol: null }, { where: { id: id } }) 
    .then((count) => { 
    if (count) { 
     return count; 
    } 
    }); 

sẽ hoạt động.

0

Bạn đã kiểm tra thông báo lỗi chi tiết hơn trong nhật ký chưa? Tôi khuyên bạn nên thêm lỗi bắt lỗi và sau đó cập nhật câu hỏi của bạn.

Hiện tại, tôi đoán bạn đã tạo kết nối của mình với omitNull: true. Gọi hàm cập nhật chỉ với một thuộc tính rỗng có thể là lý do của lỗi 500 vì nó sẽ tạo ra lệnh UPDATE không đầy đủ (không có SET).

Cố gắng thiết lập omitNull: false hoặc, nếu bạn không thể làm bài kiểm tra này, cố gắng cập nhật cách đây: info

db.TestTable.testCol = null; 
db.TestTable.save(['testCol']); 

More here.

Các vấn đề liên quan