API v2 row update fails with the documented data format

Đang mở Phù hợp với người mới
#3,261 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
78/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
javascript, openapi
Lĩnh vực
api, backend

Hướng nghiên cứu

Bắt đầu bằng cách so sánh RowOCSController::updateRow() và PublicRowOCSController::updateRow() với createRow(), vốn đã chấp nhận định dạng map được tài liệu hóa theo issue. Kiểm tra openapi.json để biết cấu trúc request dự kiến và xem RowDataInput để hiểu lỗi. Công việc hoàn tất khi cả hai route cập nhật chấp nhận map được tài liệu hóa, từ chối đầu vào không hợp lệ bằng HTTP 400 và tiếp tục hỗ trợ định dạng list.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

0. Needs triage bug feature: api
Steps to reproduce

PUT /ocs/v2.php/apps/tables/api/2/views/{v}/rows/{r} (or the public share route) with {"data": {"18": "x"}}, the columnId → value map openapi.json documents.

Expected behavior

The cell is updated, as with createRow() and API v1, which accept the map.

Actual behavior

HTTP 500, logged as "Cannot access offset of type string on string" in RowDataInput. Only the list form [{"columnId": 18, "value": "x"}] works, which is what the web UI sends.

Tables app version

main (2.4.x); also present on the Tables 2.0 pull requests

Database

MariaDB (dev instance); not database-specific unless noted

Additional info

Suggested fix: convert the map in RowOCSController::updateRow() and PublicRowOCSController::updateRow() as createRow() does, and answer 400 for anything else.

Found while reviewing #3178.

Ngôn ngữ chính
JavaScript
Star
220
Fork
57
Merge trung bình
1 ngày 13 giờ
Pull request đã merge (30 ngày)
89

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của nextcloud/tables

Tất cả issue của nextcloud/tables

Issue tương tự

Thêm issue về JavaScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.