小编djf*_*dev的帖子

在ES6中存储数组设置并按值访问它们

有一种简单的方法可以验证ES6 Set是否包含特定数组的值?我想要一个不需要我使用引用的解决方案:

var set = new Set();

var array = [1, 2];
set.add(array);
set.has(array); // true

set.add([3, 4]);
set.has([3, 4]); // false
Run Code Online (Sandbox Code Playgroud)

到目前为止,我的解决方案是将所有内容存储为字符串,但这很烦人:

set.add([3, 4].toString());
set.has([3, 4].toString()); // true
Run Code Online (Sandbox Code Playgroud)

javascript arrays set ecmascript-6

9
推荐指数
3
解决办法
4222
查看次数

在HTTP请求中指定端口号(node.js)

使用请求模块进行HTTP请求时是否可以指定端口号?我在文档中没有看到任何相关内容:

var request = require('request');

// this works
request({
  method: 'GET',
  url: 'http://example.com'
}, function(error, response, body) {
  if (error) console.log(error);
  console.log(body);
});

// this does not work
request({
  method: 'GET',
  url: 'http://example.com:10080'
}, function(error, response, body) {
  // ...
});
Run Code Online (Sandbox Code Playgroud)

另外,当我运行第二个版本时,我的程序中绝对没有任何事情发生(几乎就像从未提出过请求).

我也知道我可以在使用核心http模块发出请求时指定端口号.为什么请求模块中没有选项?

编辑:我之前应该提到过这个,但是我在Heroku上运行这个应用程序.

当我在本地运行请求时(使用请求模块),我可以指定端口号,并获得成功的回调.

当我从Heroku运行请求时,没有触发回调,并且nginx没有显示请求的记录.

我疯了吗?是否有某些原因Heroku阻止我向特定端口号发出出站HTTP请求?

http request node.js

9
推荐指数
2
解决办法
3万
查看次数

继承自Set.prototype

这真让我烦恼.我可以轻松地创建一个继承以下方法的新类Array.prototype:

var MyArray = function() {};

MyArray.prototype = Array.prototype;

var myArray = new MyArray();
myArray.push(1); // this is allowed
Run Code Online (Sandbox Code Playgroud)

相同的继承模式似乎不适用于Set.prototype:

var MySet = function() {};

MySet.prototype = Set.prototype;

var mySet = new MySet();
mySet.add(1); // TypeError: Method Set.prototype.add called on incompatible receiver
Run Code Online (Sandbox Code Playgroud)

这是一个实施问题吗?是否有另一种继承模式可行?我在节点v0.12和Canary中尝试了相同的结果.

编辑:这个解决方案有效,但我仍然不确定为什么上述方法不起作用:

var MySet = function(array) {
  var inst = new Set(array);
  inst.__proto__ = MySet.prototype;
  return inst;
}

MySet.prototype = Object.create(Set.prototype);
Run Code Online (Sandbox Code Playgroud)

javascript inheritance set ecmascript-6

5
推荐指数
1
解决办法
838
查看次数

Node.js HTTP 流请求与 Express.js 请求对象

这是一个“如果它没有坏,就不要修理它”的经典故事

我使用 Node.js 创建了一个相对简单的 HTTP 请求处理程序。我通过将请求正文的 SHA-1 与作为请求标头的签名进行匹配来验证请求:

var http = require('http');
var crypto = require('crypto');
var secret = process.env.MY_SECRET;

var requestListener = function(req, res) {
    if (req.method === 'POST') {
        var body = '';
        req.on('data', function(data) {
            body += data;
        });
        req.on('end', function() {
            var signature = req.headers['x-signature'];
            var hash = crypto.createHmac('sha1', secret)
                .update(body)
                .digest('hex')
                .toUpperCase();
            if (signature === hash) {
                // request is authorized
            }
        });
    }
};

var server = http.createServer(requestListener);
server.listen(3000);
Run Code Online (Sandbox Code Playgroud)

这工作得很好,除了一切都很丑陋,而且我还是想实现 Express.js 的其他功能。我重写了代码如下:

var crypto …
Run Code Online (Sandbox Code Playgroud)

javascript sha1 node.js express

5
推荐指数
1
解决办法
8689
查看次数

pg_restore 无法加载转储

帮助!突然间,我在尝试从转储中恢复本地数据库时收到此错误:

$ pg_restore --no-acl --no-owner --dbname my_db tmp/latest.dump
pg_restore: [archiver (db)] Error while INITIALIZING:
pg_restore: [archiver (db)] could not execute query: ERROR:  unrecognized configuration parameter "idle_in_transaction_session_timeout"
Command was: SET idle_in_transaction_session_timeout = 0;
Run Code Online (Sandbox Code Playgroud)

在本地,我运行的是 postgresql 9.6.3。转储来自运行 9.4 的服务器。由于此命令停止工作,我的机器没有已知的配置更改。

我知道这idle_in_transaction_session_timeout是在 9.6 中引入的,但我仍然应该能够加载 9.4 生成的转储。那么什么给呢?

postgresql

2
推荐指数
1
解决办法
6453
查看次数

在代理数组上调用 concat 会引发错误

我是 ES6 对象的新手,在尝试调用已代理的数组Proxy时遇到了我不明白的错误。concat

\n\n

背景:

\n\n

我认为 ES6Proxy可以完美地作为一种方式来验证我的 React/Redux 应用程序中的减速器函数的“纯度”。我可以将我的状态对象包装在代理中,如果我尝试改变该对象,该代理会抛出错误。我正在使用基于on-change库的东西来执行此操作:

\n\n
const triggersOnChange = (object, onChange) => {\n  const handler = {\n    get (target, property, receiver) {\n      try {\n        return new Proxy(target[property], handler)\n      } catch (err) {\n        return Reflect.get(target, property, receiver);\n      }\n    }\n\n    defineProperty (target, property, descriptor) {\n      onChange()\n      return Reflect.defineProperty(target, property, descriptor)\n    }\n\n    deleteProperty (target, property) {\n      onChange()\n      return Reflect.deleteProperty(target, property)\n    }\n  }\n\n  return new Proxy(object, handler)\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我打算如何使用代理包装器的示例测试:

\n\n
describe(\'reducer\', () …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 redux

1
推荐指数
1
解决办法
953
查看次数