Articles of node.js

查询Mongo数据库

我需要对我的mongo数据库中的以下条目执行查询: { "_id" : ObjectId("597b19512a5b1c3258e6440e"), "fdata" : [ { "type" : "header", "subtype" : "h1", "label" : "Date Of Commencement" }, { "type" : "paragraph", "subtype" : "p", "label" : "The partnership business shall be deemed to have commenced on and from :" }, { "type" : "date", "label" : "Date Field", "description" : "Enter […]

无法使用邮递员从express.js服务器得到回应

当我从邮递员请求数据时,请求数据显示服务器,但服务器的响应,即状态码和JSON对象没有发送到邮递员,邮递员正在加载…一段时间后,它说无法从服务器得到响应。 这里是我的server.js类 var bodyParser = require('body-parser'); var express = require('express'); var {mongoose} = require('./db/mongoose'); var {Todo} = require('./models/todo'); var {Users} = require('./models/Users'); var app = express(); app.use(bodyParser.json()); app.post('/todos', (req, res) =>{ var todo = new Todo({ text: req.body.text }); todo.save().then((doc) => { res.send(doc); }, (e) => { res.status(400).send(e); }); }); app.listen(3000, () =>{ console.log('started at […]

节点国际化不能在Jade视图内工作(节点i18n)

我一直在使用国际化的i18n节点模块。 在根我初始化模块如下: i18n.configure({ locales: ['en', 'nl'], register: global, directory: path.join(__dirname, 'locales'), defaultLocale: 'en', objectNotation: true }); app.use(i18n.init); 该模块已经将翻译function( __() )注册为全局。 但是,这个函数不起作用,所以我决定把它传递给我的控制器和视图中的方法。 app.use((req, res, next) => { res.locals.user = req.session.user || null; res.locals.formatDate = (data) => data ? format(data, process.env.DATE_FORMAT) : null; res.locals.__ = res.__ = () => i18n.__.apply(req, arguments); req.setLocale('en') next(); }); 它在控制器中工作正常。 我使用req.__('string-to-translate')并根据需要进行翻译。 但是,当我尝试使用与帕格/翡翠呈现的视图中完全相同的function时,它返回给我undefined […]

打字稿错误TS2339

我运行一个只有一个名为iterator的类,如下所示: Iterator.class.ts export class Iterator { private itr: any; private opt: any; private keys: any; private type: string; constructor(iterable, options) { this.itr = iterable; this.opt = options; this.keys = []; this.prepare(); } private prepare() { this.type = this.itr.constructor.name.toLowerCase().trim(); if (['array', 'object'].includes(this.type)) { this.keys = Object.keys(this.itr); } } } 我还在我的项目中使用-g标志和local来安装打字稿。 但每当我尝试编译我的iterator.class.ts文件到js文件,我遇到了下面的错误: iterator.class.ts(18,29):错误TS2339:属性'includes'在types'string []'上不存在。 这是我的tsconfig.json文件,我安装了我在这个文件中提到的所有要求,如: { "compilerOptions": […]

节点产生进程和存储输出

我的脚本的这一部分正试图产生一个克隆硬盘驱动器的孩子。 它基本上工作,但我遇到的问题是,当我遇到一个错误,并希望存储输出,它只存储输出的第一行,排除我实际需要的东西。 我已经在脚本之外运行了这个命令,它给了我两行输出,如果失败,第二行是错误。 那么,我怎么能存储整个输出。 非常感谢帮助,谢谢! NtfsPartition.prototype.WriteFs = function(filename, progress, success, error) { console.log('Writing NTFS FS'); var s = spawn("ntfsclone", ['–restore-image', '–overwrite', this.dev, filename]); var err_msg = ''; s.on('error', function(err) { err_msg = err; }); s.stderr.on('data', function(data) { err_msg += data.toString(); }); s.stdout.on('data', function(data) { var match = data.toString().match(kNtfsWriteFsProgressRegex); if(!match) { return; } progress(match[1]); }); s.on('exit', […]

当pipe道读取stream写入stream时,听写?

我有这个代码: const readStream = fs.createReadStream(readFilename, { highWaterMark: 10 * 1024 }); const writeStream = fs.createWriteStream(writeFilename, { highWaterMark: 1 * 1024 }); readStream.pipe(writeStream); 正如你所看到的,两者的缓冲区(highWaterMark)大小是不同的。 读取有一个更高的缓冲区,当读取pipe道写入它确实是太多的写入缓冲区处理。 它在内存中保留了9 * 1014,处理了整个负载之后,它就会消耗掉。 这可以。 然而。 当通过writable.write手动writable.write ,返回false ,所以你可以改变读取stream有一个较低的缓冲区(如果这是你所希望的)。 我的问题是,由于我直接pipe道,有无论如何听写可写的写事件吗? 我能听到的唯一的事情就是它已经采取了太多的排水事件。

电子节点的请求库下载的文件被破坏

我正尝试使用电子节点的请求库在networking服务器上下载png和word文件。 由代码生成的文件已损坏。 下面是代码 var req =new request({ method: 'GET', uri: file_url, headers:{ "Content-Type": "application/octet-stream", "Content-disposition": "attachment" } }).pipe(fs.createWriteStream(path.resolve()+"\\test.png",{defaultEncoding: 'binary'})); 我尝试使用和不使用标题和编码选项。 但结果还是一样的。 有没有其他办法

我怎样才能检查我的请求身体在一个nock拦截,但留下一个整数值有不同的值?

我试图在检查通过的请求主体符合我的假设的同时禁止一个路由调用。 这个路由被多次调用以testing三个inheritance实现。 这个调用是相同的,只是请求主体中的一个值( param3 )在值上有所不同。 nock('someAddress') .post('/path', { param1: [someArray], param2: someInteger, param3: /[0-9]+/ /* param3 has varying positive integer values */ }) .reply(200, { responseObject }); 如果我把param3的确切值,我可以得到第一次迭代的testing成功。 显然,我也可以通过不指定请求主体来完成testing。 但是,如果我要么离开param3或试图指定各种通配符参数,如在例子中的正则expression式,我总是得到以下错误信息: [route] 404 error: Nock: No match for request POST [someAddress/path] {"param1":[someArray],"param2":someInteger,"param3":exactValueOfThisCall} 我怎样才能检查我的请求主体在一个nock拦截,但允许一个单一的参数有不同的整数值?

错误:使用AWS Lambda上的gm降低图片质量时,stream会产生空缓冲区

我已阅读所有其他主题,并尝试了一些答案,但我似乎无法弄清楚为什么我得到这个错误。 我的代码在S3存储桶中获取上传的图片,降低质量并将其放入第二个存储桶中。 干净利落。 随着中小型图像一切正常,但如果我上传的东西超过2 MB(或多或less)我得到的错误标题。 我的Lambda函数有128MB和3分钟的超时时间; 这里是代码: const gm = require('gm').subClass({imageMagick: true}); const AWS = require('aws-sdk'); const async = require('async'); const S3 = new AWS.S3(); exports.handler = (event, context, callback) => { var srcBucket = event.Records[0].s3.bucket.name; var srcKey = event.Records[0].s3.object.key; var dstBucket = "destinationbucket"; var dstKey = "resized-" + srcKey; // Infer the image type. […]

为数组的每个元素发出查询

我目前正在查询我的mondo数据库在一个集合中返回一个数组的URL的数组。 然后,我想使用该数组来通过另一个集合,并find前一个查询的返回数组中的每个元素的匹配元素。 在数组上使用forEach并进行个别查询是否正确? 我的代码看起来像这样,第一个函数getUrls很好。 目前我得到的错误是: (节点:10754)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:1):TypeError:无法读取未定义的属性“限制”(节点:10754)[DEP0018]弃用警告:弃用未处理的承诺拒绝。 将来,未处理的承诺拒绝将使用非零退出代码来终止Node.js进程。 async function useUrls () { let domains = await getUrls() let db = await mongo.connect("mongodb://35.185.206.31:80/lc_data") let results = [] domains.forEach( domain =>{ let query = {"$match": {"email_domain": domain} } let cursor = db.collection('circleback') .aggregate([query], (err, data) =>{ if(err) throw err; console.log("cb", data) }).limit(1100) })