小编vit*_*y-t的帖子

NodeJS,promises,streams - 处理大型CSV文件

我需要构建一个处理大型CSV文件的函数,以便在bluebird.map()调用中使用.考虑到文件的潜在大小,我想使用流媒体.

此函数应接受流(CSV文件)和函数(处理流中的块)并在读取文件结束(已解决)或错误(拒绝)时返回承诺.

所以,我从:

'use strict';

var _ = require('lodash');
var promise = require('bluebird');
var csv = require('csv');
var stream = require('stream');

var pgp = require('pg-promise')({promiseLib: promise});

api.parsers.processCsvStream = function(passedStream, processor) {

  var parser = csv.parse(passedStream, {trim: true});
  passedStream.pipe(parser);

  // use readable or data event?
  parser.on('readable', function() {
    // call processor, which may be async
    // how do I throttle the amount of promises generated
  });

  var db = pgp(api.config.mailroom.fileMakerDbConfig);

  return new Promise(function(resolve, reject) {
    parser.on('end', resolve);
    parser.on('error', reject);
  });

} …
Run Code Online (Sandbox Code Playgroud)

node.js promise bluebird pg-promise

11
推荐指数
2
解决办法
6057
查看次数

将Angular-CLI部署为zip存档

如何修改/扩展新的Angular CLI 1.6(及更高版本)项目,以便在运行后ng build --prod我们还生成生产网站的ZIP存档?

我希望它是CLI构建过程中不可或缺的一部分,如果可能的话,而不是自定义外部解决方案(我目前正在使用).

zip webpack angular-cli

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

如何使用 Enum 类型的字段执行 Typesafe JSON?

我有一些符合我定义的 TypeScript 接口的 JSON 文件。

大多数情况下,在导入此类 JSON 文件并将它们分配给类型化变量时,TypeScript 能够自动推断类型签名(参见behaves exactly as I want下面的代码)。但是,当类型包含字符串 enums 时,它不再起作用(请参阅参考资料DOES NOT behave)。

以下是一个工作最小、可重现的示例:

有效的.json

{ "id": 3.14159 }
Run Code Online (Sandbox Code Playgroud)

无效的.json

{ "id": "3.14159" }
Run Code Online (Sandbox Code Playgroud)

有效枚举.json

{ "color": "red" }
Run Code Online (Sandbox Code Playgroud)

无效枚举.json

{ "color": "chartreuse" }
Run Code Online (Sandbox Code Playgroud)

索引.ts

import validJson from './valid.json'
import invalidJson from './invalid.json'
import validJsonEnum from './validEnum.json'
import invalidJsonEnum from './invalidEnum.json'

type ColorType = 'red' | 'blue' | 'yellow'

type IJsonType = {"id": number}
type IJsonTypeWithEnum = …
Run Code Online (Sandbox Code Playgroud)

enums json typescript

10
推荐指数
2
解决办法
1438
查看次数

使用自定义承诺作为泛型类型

我有一个环境TypeScript模块代表一个支持任何Promises/A +库的库:

interface Test {
  funcName():Promise<string>;
}
Run Code Online (Sandbox Code Playgroud)

所以我需要调整它,以便在声明级别上访问任何promise库的协议:

interface Test<P> {
  funcName():P<string>;
}
Run Code Online (Sandbox Code Playgroud)

但TypeScript立即抱怨:Type 'P' is not generic在我使用它之前.

请注意,我不能将自定义promise库包含在同一个文件中Test,因为我必须从另一个模块中传入它.

如果我将代码更改为:

interface AnyPromise<T, P extends Promise<T>> {
}

interface Test<P> {
    funcName():AnyPromise<string, P<string>>;
}
Run Code Online (Sandbox Code Playgroud)

它也在error TS2315: Type 'P' is not generic.这部分内抱怨:P<string>.

最后,我需要能够做到这样的事情:

import * as promise from 'bluebird'; // from Bluebird ambient declarations 
import {Test} from 'test';

var Test<promise> t; // plus initialize it;

t.funcName().finally(())=>{
}); // NOTE: 'finally' is to be visible …
Run Code Online (Sandbox Code Playgroud)

promise typescript bluebird

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

从条件INSERT中获取Id

对于像这样的表:

CREATE TABLE Users(
    id SERIAL PRIMARY KEY,
    name TEXT UNIQUE
);
Run Code Online (Sandbox Code Playgroud)

以下操作的正确单一查询插入是什么:

给定用户name,插入新记录并返回新记录id.但如果name已经存在,只需返回id.

我知道PostgreSQL 9.5中的新语法ON CONFLICT(column) DO UPDATE/NOTHING,但我无法弄清楚,如果有的话,它可以提供帮助,因为我需要id返回.

这似乎RETURNING id与ON CONFLICT不属于一起.

sql postgresql concurrency upsert

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

在Web API中处理无效的JSONP请求

我在Web API 2服务中使用WebApiContrib.Formatting.Jsonp,在Swagger中使用API​​文档和测试.

当我通过Swagger触发任何JSONP方法时,我的服务在以下行的文件JsonpMediaTypeFormatter.cs中崩溃:

throw new InvalidOperationException(Properties.Resources.NoCallback);
// NoCallback = The name 'NoCallback' does not exist in the current context
Run Code Online (Sandbox Code Playgroud)

首先,我不明白为什么Swagger不允许为JSONP请求指定回调名称.但更重要的是,我不希望服务因此而崩溃.

问题:

  • 我们如何在服务方面处理这些错误?
  • 有没有办法让Swagger正确发送JSONP请求?(比如为所有JSONP请求预先定义一个回调名称?)

c# asp.net asp.net-web-api swagger web-api-contrib

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

NodeJS中的嵌套模板字符串错误

为什么以下行导致Node.js中的运行时错误?

var a = ````;
Run Code Online (Sandbox Code Playgroud)

抛出:

TypeError:""不是函数


使用Node.js版本4.x,6.x,8.x和9.x进行测试

javascript node.js

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

显式数组属性与JavaScript中的变量

试图重构一个简单的函数:

// arr - array of objects with functions
function eventNotify(arr, event) {
    for (var i = 0; i < arr.length; i++) {
        var a = arr[i];
        if (typeof a[event] === 'function') {
            a[event]();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

进入这一个:

function eventNotify(arr, event) {
    for (var i = 0; i < arr.length; i++) {
        var a = arr[i][event];
        if (typeof a === 'function') {
            a();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我一直试图理解这种变化如何破坏我的所有测试.

第二个实现与第一个实现在功能上有何不同?

我甚至试图分割索引的使用,认为它可能被视为3D数组:

var a = arr[i];
a = a[event];
Run Code Online (Sandbox Code Playgroud)

但不,这没有任何区别.

请有人指出我在算法的逻辑上改变了什么!我现在正在嘲笑这个.


我在Node.js 10.9下测试它

javascript arrays

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

在JavaScript中查找文本字符串

我有一个很大的有效JavaScript文件(utf-8),我需要从中自动提取所有文本字符串.

为简单起见,该文件中不包含任何注释块,只包含有效的ES6 JavaScript代码.

一旦我发现的发生'或"或者',我应该扫描文本块的结尾,是我卡住了,因为所有可能的变化,比如"'",'"'"\'","\"", '",`\``等

是否有已知和/或可重用的算法来检测有效的ES6 JavaScript文本块的结尾?

UPDATE-1:我的JavaScript文件不仅很大,我还必须以块的形式处理它,因此Regex绝对不可用.我不想让我的问题复杂化,提到联合代码块,我会自己解决这个问题,如果我有一个算法可以处理内存中的单个代码.

更新-2:我最初开始工作,感谢这里给出的许多建议,但是由于正则表达式,我再次陷入困境.

正则表达式的示例打破了迄今为止建议的任何文本检测技术:

/'/
/"/
/\`/
Run Code Online (Sandbox Code Playgroud)

仔细研究了这个问题,通过阅读:JavaScript如何检测正则表达式?我担心在JavaScript中检测正则表达式是一个全新的球类游戏,值得一个单独的问题,否则它会变得太复杂.但是,如果有人能指出我正确的方向,我非常感谢...

更新3:经过大量研究后,我遗憾地发现我无法想出一个适用于我的算法的算法,因为正则表达式的存在使得任务比最初想象的要复杂得多.根据以下内容:解析Javascript时,什么决定了斜杠的含义?确定JavaScript中正则表达式的开头和结尾是最复杂和最复杂的任务之一.如果没有它,我们就无法弄清楚符号',''和` 何时打开文本块或者它们是否在正则表达式中.

javascript regex node.js

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

通过UglifyJS枚举正则表达式

我有一些JavaScript代码,我需要从中找到每个文字正则表达式的起始+结束索引.

如何从UglifyJS中提取此类信息?

var uglify = require('uglify-js');
var code = "func(1/2, /hello/);";
var parsed = uglify.parse(code);
Run Code Online (Sandbox Code Playgroud)

我进入变量的结构parsed非常复杂.而我所需要的只是[{startIdx, endIdx}, {startIdx, endIdx}]每个字面正则表达式的数组.

PS如果有人认为可以通过比UglifyJS更好的方式完成同样的任务,欢迎提出建议!

UPDATE

我知道如果我深入研究解析后的结构,那么对于每个正则表达式我都可以找到对象:

AST_Token {
     raw: '/hello/',
     file: null,
     comments_before: [],
     nlb: false,
     endpos: 17,
     endcol: 17,
     endline: 1,
     pos: 10,
     col: 10,
     line: 1,
     value: /hello/,
     type: 'regexp'
}
Run Code Online (Sandbox Code Playgroud)

我需要弄清楚如何从解析的结构中提取所有这些对象,这样我就可以编译位置索引列表.

javascript uglifyjs

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