`context` and `metadata` Map support
还没有人认领这个 Issue。
评估
- 难度
- 2/5
- 预计耗时
- 1-3 小时
- 新手友好度
- 45/100
- Issue 类型
- 缺陷
- 描述清晰度
- 描述清楚
- 活跃度
- 停滞
- 技术栈
- javascript
- 领域
- api
调研方向
从报告中引用的 encode_context 函数附近的 lib/utils/index.js 开始,然后复现为 Map 和 Object 输入提供的两个 assertions。当 context 和 metadata 保留数值键和值,并生成预期的编码字符串,且不要求调用方预先转换它们时,即表示完成。
由索引模型根据 Issue 内容生成。
描述
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
- 主要语言
- JavaScript
- 星标
- 672
- 派生
- 318
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 没有贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
cloudinary/cloudinary_npm 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 45/100
cloudinary/cloudinary_npm#746 · 1 条评论 ·
-
难度 5/5 一周以上 新手友好度 30/100
cloudinary/cloudinary_npm#739 ·
-
难度 2/5 1-3 小时 新手友好度 58/100
cloudinary/cloudinary_npm#734 ·
-
难度 5/5 一周以上 新手友好度 25/100
cloudinary/cloudinary_npm#713 · 1 条评论 ·
-
难度 2/5 1-3 小时 新手友好度 45/100
cloudinary/cloudinary_npm#712 · 1 条评论 ·
查看 cloudinary/cloudinary_npm 的全部 Issue
相似的 Issue
-
bug confirmed issue
难度 2/5 1-3 小时 新手友好度 62/100
open-webui/open-webui#34458 · 2 条评论 ·
维护者通常 1 天内回复
-
documentation good first issue
难度 1/5 1 小时以内 新手友好度 78/100
-
area: install-setup needs-info question
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
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
难度 2/5 1-3 小时 新手友好度 74/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 75/100
themactep/thingino-firmware#2018 ·
维护者通常 1 天内回复