Articles of node.js

在一个NodeJS进程中使用多个队列可以吗?

我有一个过程,它应该处理两种不同types的消息,并以相似但不同的方式处理它们。 当然,我会使用两个单独的队列这两种消息,并调用消耗()两次。 另一种可能性是只有一个队列,并且在内容缓冲区内由某种“消息types”属性区分,并在交换机中处理每个消息。 哪个会是更“推荐”的方式呢? 使用这两种方法有什么优点/缺点?

curl/ Debian无法解决主机间歇性错误

我有生产脚本通过nodejs在PHP(curl)或http请求中对不同的URL进行不同的调用,例如: 几百个NodeJS每天向我自己的服务器请求OVH( mydomain.com/api/… ) 与Curl中的PHP(Symfony2)一样,外部API( view-api.box.com )也是这样,每天大约100(在我的API速率限制下) 与我自己的另一个托pipe域上的旧网站服务器在OVH( myolddomain.fr )同步每次用户login 几个电话到外部网站更新一些文件( http://ec.europa.eu/blahblah… ) 这些要求运行了大约2年,它已经开始给我以下两个星期的错误: NodeJs错误 getaddrinfo ENOTFOUND for mydomain.com/api/… PHPcurl错误 Could not resolve host: view-api.box.com或Curl err[6]: Could not resolve host: myolddomain.fr 。 我没有更改或更新我的Debian服务器上的任何软件包( Debian GNU/Linux 8 ), 最近间歇性地出现问题,似乎是非常随机的( 每天5到10次 ) 我怀疑它没有任何关系的代码,但一些DNS问题或find任何远程域(甚至我自己的)的麻烦,但我不知道在哪里看,因为它来自不同的代码/请求… cat /etc/resolv.conf domain local search local nameserver 213.186.33.99 # (OVH Dns servers) 问题是…我应该在哪里首先解决这个问题? 有任何提示呢?

什么是包含'ref'但不指定types的Mongoose模型属性?

对于mongoose来说很新奇 – 我正在做一个现有的项目,并且已经被赋予了改变一些模型属性的任务。 我明白,如果一个模型包含这种属性 postedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' } 该属性引用另一个模型/模式,并访问该链接的模型/模式需要populate它来访问该属性。 但是在我正在审查的代码中(我没有写),这个types有很多属性 contentTypes: [{ ref: 'ContentType' }], source: { ref: 'Source',required: true }, 在哪里引用另一个模式,但没有types。 这是同一种关系,并暗示了id ? 这是一个子文件吗? 作为一个额外的问题:如果在一个模型中,我想引用一个链接模型(或模式)的属性,我需要先populate ? 也就是说,如果它是一个子文档,我可以使用点符号,但如果它是一个“链接”的文档,我不知道。

在使用Node.js连接到MongoLab中的mongoDB时出错

在使用node.js连接到MongoLab中的mongoDB时出现错误。 错误在下面解释。 您的环境已经设置为使用Node.js 6.9.1(x64)和npm。 C:\Users\User>cd C:\xampp\htdocs\fgd C:\xampp\htdocs\fgd>node server Server is running on the port8989 GET / 200 113.510 ms – 6352 GET /calendar/tcal.js 404 7.320 ms – 29 GET /calendar/tcal.js 404 1.024 ms – 29 GET /favicon.ico 404 0.845 ms – 24 passstring Error: Username containing an unescaped at-sign at module.exports (C:\xampp\htdocs\fgd\node_modules\mongodb\lib\url_parser.j s:59:13) at connect […]

Node.js sqlite导出数据库

我有一个node.js和node sqlite npm包的问题。 我正在做一个服务器端客户端应用程序,我需要询问一个SQLite数据库很多,我观察当我做了超过4个查询请求时,它正开始阻止从文件读取事件循环 。 var data_db = new sqlite3.Database('data.db'); 有时我甚至会得到一个18秒的事件块。 发生这种情况时,我在服务器上做很多请求,否则我得到40毫秒50ms事件块,这是不好的。 我观察到,如果在记忆中这样做,一切都会闪电般快速。 var data_db = new sqlite3.Database(':memory:'); 所以我的想法是把所有的东西都放在内存中,并在开始时从data.db导入,然后每60秒将其导出到data.db 问题是我不知道如何从node.js中导出,我该怎么做? 想法?

Express Js将原始http2头信息写入res对象套接字

我需要得到一个原始的套接字后,在我的网站上的具体url的请求,我有这样的逻辑,即时运行使用spdy的http2服务器: bin.js: var app = require('../app'); var debug = require('debug')('http2-nodejs-test:server'); const spdy = require('spdy'); const path = require('path'); const fs = require('fs'); var port = normalizePort(process.env.PORT || '443'); app.set('port', port); const options = { key: fs.readFileSync('privkey.pem'), cert: fs.readFileSync('fullchain.pem'), ca : fs.readFileSync('chain.pem'), spdy: { protocols: [ 'h2'], plain: false } } spdy.createServer(options, app).listen(port); 在我的app.js中有路由逻辑: var express […]

Firebase RangeError:检索数据时string的长度无效

我正在使用Firebase /数据库Node.js / Admin。 我试图找回超过100K的孩子(并在客户端工作)。 我得到了以下错误(加载很长时间后): /node_modules/firebase-admin/lib/database/database.js:161 function Sf(a,b){a.frames.push(b);if(a.frames.length==a.De){var c=a.frames.join("");a.frames=null;c=eb(c);a.Xf(c)}}h.send=function(a){Rf(this);a=A(a);this.ob+=a.length;Gf(this.Ua,"bytes_sent",a.length);a=pc(a,16384);1<a.length&&Tf(this,String(a.length));for(var b=0;b<a.length;b++)Tf(this,a[b])};h.Qc=function(){this.yb=!0;this.wc&&(clearInterval(this.wc),this.wc=null);this.Ha&&(this.Ha.close(),this.Ha=null)}; RangeError: Invalid string length at Array.join (native) at Sf (/node_modules/firebase-admin/lib/database/database.js:161:76) at Client.Ha.onmessage (/node_modules/firebase-admin/lib/database/database.js:159:289) 我用下面的代码与Node.js运行此: var databaseRef = defaultApp.database().ref('a_root_node'); var usersRef = databaseRef.child('users') usersRef.once('value').then(snapshot => { res.status(200).send(snapshot.val()) }) 我也尝试将其作为Firebasefunction运行,并增加了内存限制,但错误是一样的。

AWS EC2 IAMangular色凭证

使用AWS的Node sdk,我试图使用连接到我的Node应用程序正在运行的EC2实例的IAMangular色给出的凭据和权限。 根据sdk文档,可以使用EC2MetadataCredentials类来为sdk分配configuration属性。 在我使用sdk访问DynamoDB实例的文件中,我有configuration代码: import AWS from 'aws-sdk' AWS.config.region = 'us-east-1' AWS.config.credentials = new AWS.EC2MetadataCredentials({ httpOptions: { timeout: 5000 }, maxRetries: 10, retryDelayOptions: { base: 200 } }) const dynamodb = new AWS.DynamoDB({ endpoint: 'https://dynamodb.us-east-1.amazonaws.com', apiVersion: '2012-08-10' }) 但是,当我试图访问Web应用程序时,我总是得到一个错误: Uncaught TypeError:d.default.EC2MetadataCredentials不是一个构造函数 Uncaught TypeError:_awsSdk2.default.EC2MetadataCredentials不是一个构造函数 即使这是从文档的确切用法! 有什么我失踪的小东西? 更新: 从文件中删除credentials和region定义会导致另一个错误,它会说: Error: Missing region|credentials in config

试图根据选定的选项显示字段

我有团队和竞争的注册部分,但是我想要做的是当用户select比赛时,我想显示促销代码字段,并且只有在select了比赛时显示该字段,如果select了团队,它将不会显示促销领域,谢谢提前。 React.Component { constructor(props) { super(props); this.state = {name: '', email: '', password: ''}; } handleChange(event) { this.setState({ [event.target.name]: event.target.value }); } handleSelect(event, index, value) { this.setState({type: value}); } handleSignup(event) { event.preventDefault(); this.props.dispatch(signup(this.state.name, this.state.email, this.state.password, this.state.promo, this.state.type)); } render() { return ( <div className="login"> <div className="panel"> <div className="body"> <legend>Create an account</legend> <SelectField floatingLabelText="User or Admin" […]

使用cxsd将.xsd转换为TypeScript,不能识别cxsd

我正在尝试使用npm库cxsd从xsd文件创build打印稿定义。 我已经通过npm安装了windows-build-tools为cxsd提供了所需的工具。 当我尝试跑步 npm run cxsd http://schemas.opengis.net/wfs/1.1.0/wfs.xsd 如cxsd的GitHub( https://github.com/charto/cxsd )所述,我得到这个错误 'csxd' is not recognized as an internal or external command,operable program or batch file. 我已经在package.json中包含了脚本“cxsd”:“csxd”。