`context` and `metadata` Map support
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
- 45/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- javascript
- Lĩnh vực
- api
Hướng nghiên cứu
Bắt đầu với lib/utils/index.js, xung quanh hàm encode_context được tham chiếu trong báo cáo, sau đó tái hiện hai assertions được cung cấp cho các đầu vào Map và Object. Được xem là hoàn thành khi context và metadata giữ nguyên các khóa và giá trị dạng số, đồng thời tạo ra các chuỗi được mã hóa như mong đợi mà không yêu cầu phía gọi phải chuyển đổi chúng trước.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Bug report for Cloudinary NPM SDK
Describe the bug in a sentence or two.
The documentation states that context and metadata both support Maps when using this SDK to upload images. However, when attempting to use a Map or even a standard Object, this does not seem to be fully supported. Images are uploaded with missing or entirely omitted context and no error is thrown during the call.
Issue Type (Can be multiple)
[ ] Build - Can’t install or import the SDK
[ ] Babel - Babel errors or cross browser issues
[ ] Performance - Performance issues
[x] Behaviour - Functions aren’t working as expected (Such as generate URL)
[x] Documentation - Inconsistency between the docs and behaviour
[ ] Incorrect Types - For typescript users who are having problems with our d.ts files
[ ] Other (Specify)
Steps to reproduce
The issue appears to be with the encode_context function which is used on both context and metadata options if provided:
In the case of actually providing a Map, the encode function fails to encode entirely and the result is an empty string. In the case of providing an Object, the encoding fails if any of the key/value pairs are a number. When a key value pair is a number only the value is encoded and not the key which leads to unexpected results.
The best way to test is with the following:
const { strict: assert } = require('assert')
const { encode_context: encode } = require('cloudinary/lib/utils')
const contextMap = new Map()
contextMap.set('storeNumber', 100148)
contextMap.set('vin', '5YJ3E1EA1JF045327')
// Fails: encoded context is an empty string
assert.equal(encode(contextMap), 'storeNumber=100148|vin=5YJ3E1EA1JF045327')
const contextObj = { storeNumber: 100148, vin: '5YJ3E1EA1JF045327' }
// Fails: encoded context is missing `storeNumber=`
assert.equal(encode(contextObj), 'storeNumber=100148|vin=5YJ3E1EA1JF045327')
The encoding only appears to work if an Object is supplied and all of the key/value pairs are first converted to a String.
In the meantime we've had to resort to converting our context argument to a string before passing it to the Cloudinary SDK so we ensure consistency, ex:
await cloudinary.uploader.upload(url, {
async: true,
context: Object.entries(context).map(val => val.join('=')).join('|')
})
Versions and Libraries (fill in the version numbers)
Cloudinary_NPM SDK version - 1.26.0
Node - 14.16.1
NPM - 6.14.13
- Ngôn ngữ chính
- JavaScript
- Star
- 672
- Fork
- 318
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của cloudinary/cloudinary_npm
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 45/100
cloudinary/cloudinary_npm#746 · 1 bình luận ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 30/100
cloudinary/cloudinary_npm#739 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 58/100
cloudinary/cloudinary_npm#734 ·
-
How to handle API KeysĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
cloudinary/cloudinary_npm#713 · 1 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 45/100
cloudinary/cloudinary_npm#712 · 1 bình luận ·
Tất cả issue của cloudinary/cloudinary_npm
Issue tương tự
-
bug confirmed issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
open-webui/open-webui#34458 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
documentation good first issue
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
-
area: install-setup needs-info question
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
accessibility area: css area: web ui bug difficulty: easy frontend good first issue help wanted javascript journey: first-visit journey: mobile priority: P3 quality tech: css tech: html typescript ui user-experience
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
themactep/thingino-firmware#2018 ·
Maintainer thường phản hồi trong vòng 1 ngày