【问题标题】:Import collection using button importing same collection multiple times - Postman使用按钮导入集合多次导入同一个集合 - 邮递员
【发布时间】:2019-05-13 16:27:11
【问题描述】:

我正在使用 Postman 6.6.0 版,并尝试通过 Run in Postman 按钮导入 API 集合。我有一个 HTML 页面,如下所示:

<div id="hiddenEnv" class="nodisplay highlight highlight-attention">
   <p>
      Click the button below to import into Postman
   </p>
   <p>                        
   <div class="postman-run-button"
      data-postman-action="collection/import"
      data-postman-var-1="abcd"></div>
   <script type="text/javascript">
      (function (p,o,s,t,m,a,n) {
          !p[s] && (p[s] = function () { (p[t] || (p[t] = [])).push(arguments); });
          !o.getElementById(s+t) && o.getElementsByTagName("head")[0].appendChild((
            (n = o.createElement("script")),
            (n.id = s+t), (n.async = 1), (n.src = m), n
          ));
        }(window, document, "_pm", "PostmanRunObject", "https://run.pstmn.io/button.js"));
   </script>        
   </p>
</div>

还有js代码:

$(function() {

    var lastEnv;

    function newEnv(name) {
        debugger;
        var env = {
            "id": generateUUID(),
            "name": "MyProject-" + name,
            "values": [{
                    "key": "hostenv",
                    "value": "",
                    "type": "text",
                    "enabled": true
                },
                {
                    "key": "username",
                    "value": "",
                    "type": "text",
                    "enabled": true
                },
                {
                    "key": "password",
                    "value": "",
                    "type": "text",
                    "enabled": true
                }
            ],
            "timestamp": 1544608923,
            "synced": false,
            "syncedFilename": "",
            "team": null,
            "isDeleted": false
        };
        return env;
    }

    $('#enter-creds').on('click', function(ev) {
        var options = {
            "name": "sampleBasicModal",
            "content": $("script#envModal").html(),
            onComplete: function(ev) {
                console.log(ev);
                var modal = $(ev.currentTarget).closest('.modal');
                var form = modal.find('form');
                console.log(form);

                var formArr = form.serializeArray();

                var envName = _.find(formArr, {name: 'hostenv'}).value.split('.')[0];
                var envOutput = newEnv(envName);

                var formObj = {};

                formObj.hostenv = _.find(formArr, {name: 'hostenv'}).value;   
                formObj.username = _.find(formArr, {name: 'username'}).value;
                formObj.password = _.find(formArr, {name: 'password'}).value;     

                if (!_pm('env.create', 'MyProject-' + envName, formObj)) {
                    _pm('env.replace', 'MyProject-' + envName, formObj);
                }

                lastEnv = envOutput;
                $('#shownEnv').remove();
                $('#hiddenEnv').slideDown(750);
            }
        };
        var inst = Olive.modal.show(options);

        ev.preventDefault();
    });
}); 

我可以将我的收藏导入 Postman 环境。但是,同一个集合不断增加 7 到 8 次。我找不到问题出在哪里!

编辑:
我检查了几次,然后发现当我有多个环境时会出现问题。

【问题讨论】:

  • 你能分享这个的部署版本吗?或者可能是 JSFiddle / codesandbox / github repo 上的东西?我很乐意在这方面为您提供帮助
  • 谢谢@SivcanSingh,一定给我一分钟,我会分享一个回购链接
  • @SivcanSingh:你可以找到 repo here
  • 我导入了它,但它只导入了一次集合(应用程序的最新版本)。不是4-5次或更多。你能分享更多关于操作系统的信息吗?无法重现这一点。您可以尝试使用 Postman Canary 版本(下载 - getpostman.com/canary)吗?只需打开 Postman Canary,然后单击在 Postman 中运行,看看是否再次发生?
  • 我在我的工作站系统(操作系统:win10)上看到了这个问题,但是无法用家庭系统重现,会有一些问题,我明天会用屏幕更新我的问题

标签: html postman postman-collection-runner


【解决方案1】:

与 Postman 团队成员讨论此问题后,他们发现 Postman 与 Windows 操作系统存在问题,这是报告的链接

Collection getting imported multiple times when using RiP button [Windows]

【讨论】:

    猜你喜欢
    • 2017-06-14
    • 2020-05-10
    • 2020-04-17
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    • 2019-11-05
    • 1970-01-01
    相关资源
    最近更新 更多