小编Amo*_*rni的帖子

何时使用next()并在Node.js中返回next()

场景:考虑以下是节点Web应用程序的代码部分.

app.get('/users/:id?', function(req, res, next){
    var id = req.params.id;
    if (id) {
        // do something
    } else {
        next(); //or return next();
    }
});
Run Code Online (Sandbox Code Playgroud)

问题:我正在检查哪一个next()或只是return next().上面的示例代码对两者都完全相同,并且没有显示执行上的任何差异.

问题:有人可以对此有所了解,何时使用next()以及何时使用return next()和一些重要区别?

v8 connect node.js express

114
推荐指数
4
解决办法
6万
查看次数

解析Nodejs中的大型JSON文件

我有一个以JSON格式存储许多JavaScript对象的文件,我需要读取文件,创建每个对象,并对它们做一些事情(在我的情况下将它们插入到数据库中).JavaScript对象可以表示为一种格式:

格式A:

[{name: 'thing1'},
....
{name: 'thing999999999'}]
Run Code Online (Sandbox Code Playgroud)

格式B:

{name: 'thing1'}         // <== My choice.
...
{name: 'thing999999999'}
Run Code Online (Sandbox Code Playgroud)

请注意,它...表示许多JSON对象.我知道我可以将整个文件读入内存然后JSON.parse()像这样使用:

fs.readFile(filePath, 'utf-8', function (err, fileContents) {
  if (err) throw err;
  console.log(JSON.parse(fileContents));
});
Run Code Online (Sandbox Code Playgroud)

但是,文件可能非常大,我宁愿使用流来完成此任务.我在流中看到的问题是文件内容可能在任何时候都被分成数据块,所以如何JSON.parse()在这些对象上使用?

理想情况下,每个对象都将被视为一个单独的数据块,但我不知道如何做到这一点.

var importStream = fs.createReadStream(filePath, {flags: 'r', encoding: 'utf-8'});
importStream.on('data', function(chunk) {

    var pleaseBeAJSObject = JSON.parse(chunk);           
    // insert pleaseBeAJSObject in a database
});
importStream.on('end', function(item) {
   console.log("Woot, imported objects into the database!");
});*/
Run Code Online (Sandbox Code Playgroud)

注意,我希望防止将整个文件读入内存.时间效率对我来说无关紧要.是的,我可以尝试一次读取多个对象并立即将它们全部插入,但这是性能调整 - 我需要一种保证不会导致内存过载的方法,无论文件中包含多少个对象.

我可以选择使用FormatA或者使用FormatB …

javascript json file node.js

83
推荐指数
7
解决办法
8万
查看次数

带有"@"的MongoDB密码

我正在尝试使用Node.js中的Mongoose使用用户名和密码连接到MongoDB数据库.所有文档都说连接字符串应该是这样的

  mongodb://username:password@host:port/db
Run Code Online (Sandbox Code Playgroud)

但是,密码中包含"@"字符.我怎么能用这个mongoose能理解的连接字符串?我可以在密码中转义'@',还是有另一种连接方法我必须使用?

mongoose mongodb node.js

76
推荐指数
7
解决办法
5万
查看次数

配置node express来提供静态bower_components?

我有一个目录结构

projectName
    | - bower_components/
    | - public/
        | - css
        | - js
        | - index.html
    | - Gruntfile.js
    | - package.json
    | - bower.json
    | - app.js
Run Code Online (Sandbox Code Playgroud)

我想启动我的应用程序并index.html使用节点服务.所以app.js我有:

var express = require('express');
var port = process.env.PORT || 3000;
var app = express();

app.configure(function(){
    // Serve up content from public directory
    app.use(express.static(__dirname + '/public'));
    app.use(app.router);
    app.use(express.logger()); 
});

app.listen(port, function(){
    console.log('Express server listening on port ' + port);
});
Run Code Online (Sandbox Code Playgroud)

index.html我的底部:

<script src="../bower_components/jquery/jquery.js"></script>
<script src="../bower_components/d3/d3.js"></script> …
Run Code Online (Sandbox Code Playgroud)

javascript node.js express bower

71
推荐指数
3
解决办法
5万
查看次数

为什么建议不要在Node.js代码中的任何地方关闭MongoDB连接?

请考虑以下是Node.js代码:

function My_function1(_params) {
    db.once('open', function (err){
     //Do some task 1
});
}

function My_function2(_params) {
    db.once('open', function (err){
     //Do some task 2
});
}
Run Code Online (Sandbox Code Playgroud)

请参阅最佳做法链接,该链接表示不要关闭任何连接

https://groups.google.com/forum/#!topic/node-mongodb-native/5cPt84TUsVg

我见过日志文件包含以下数据:

Fri Jan 18 11:00:03 Trying to start Windows service 'MongoDB'
Fri Jan 18 11:00:03 Service running
Fri Jan 18 11:00:03 [initandlisten] MongoDB starting : pid=1592 port=27017 dbpath=\data\db\ 64-bit host=AMOL-KULKARNI
Fri Jan 18 11:00:03 [initandlisten] db version v2.2.1, pdfile version 4.5
Fri Jan 18 11:00:03 [initandlisten] git version: d6...e0685521b8bc7b98fd1fab8cfeb5ae
Fri Jan 18 11:00:03 …
Run Code Online (Sandbox Code Playgroud)

mongodb node.js

53
推荐指数
3
解决办法
8万
查看次数

如何将MongoDB副本集转换为独立服务器

考虑一下,我有4个复制集,配置如下:

{
 "_id": "rs_0",
 "version": 5,
 "members" : [
  {"_id": 1, "host": "127.0.0.1:27001"},
  {"_id": 2, "host": "127.0.0.1:27002"},
  {"_id": 3, "host": "127.0.0.1:27003"},
  {"_id": 4, "host": "127.0.0.1:27004"}
 ]
}
Run Code Online (Sandbox Code Playgroud)

我可以使用连接到所有集 mongo --port <port>

有关于获取有关将独立转换为副本集的信息的文档,但有人可以告诉我如何从副本集转换回独立版本吗?

mongodb replicaset

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

如何在Golang中解析/ deserlize动态JSON

场景:
考虑以下是JSON:

{
   "Bangalore_City": "35_Temperature",
   "NewYork_City": "31_Temperature",
   "Copenhagen_City": "29_Temperature"
}
Run Code Online (Sandbox Code Playgroud)

如果您注意到,数据的结构使得没有硬编码的密钥提及City/ Temperature它基本上只是值.

问题:我无法解析任何动态的JSON.

问题:有没有人能找到这种JSON解析的解决方案?我试过go-simplejson,gabs和默认encoding/json但没有运气.

注意: 上面的JSON仅用于示例.并且有很多应用程序正在使用当前的API,所以我不想改变数据的结构.我的意思是我不能改变如下:

[{
   "City_Name":"Bangalore",
   "Temperature": "35"
},...]
Run Code Online (Sandbox Code Playgroud)

然后我可以定义 struct

type TempData struct {
  City_Name string
  Temperature  string
}
Run Code Online (Sandbox Code Playgroud)

json go

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

无法从命令行或调试器启动服务

我已经创建了一个Windows服务并将其安装在服务器上.它似乎工作得很好,即做其意图.但是当我通过远程桌面登录服务器时,我收到以下消息:

无法从命令行或调试器启动服务.首先必须安装Windows服务(使用installutil.exe),然后使用ServerExplorer,Windows服务管理工具或NET START命令启动.

我点击然后转到服务资源管理器检查服务,它开始正常.没有错误报告.

我安装了这个,所以它使用Local System作为"Log On As".

谢谢.

c# windows service

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

如何用Node.JS的restify框架解析/读取多个参数

场景:我们的开发人员正在尝试用Node.JS Restful API替换Web服务(用C#.Net编写).

问题:现在我们需要按原样处理传入的请求(我们无法控制它).所以以下是传入URL的格式:

http://www.website.com/Service.aspx?UID=Trans001&FacebookID=ae67ea324&GetDetailType=FULL

我能够处理如下的URL:

http://www.website.com/service/Trans001/ae67ea324/FULL

我可以从上面的URL解析/读取参数

码:

var server = require('restify').createServer();
function respond(req, res, next) {
    console.log("req.params.UID:" + req.params.UID);
    console.log("req.params.FacebookID:" + req.params.FacebookID);
    console.log("req.params.GetDetailType" + req.params.GetDetailType);
}
server.get('/service/:UID/:FacebookID/:GetDetailType', respond);
server.listen(8080, function () {
    console.log('%s listening at %s', server.name, server.url);
});
Run Code Online (Sandbox Code Playgroud)

问题:如何从URL中读取格式为的多个参数http://www.website.com/Service.aspx?UID=Trans001&FacebookID=ae67ea324

request.querystring node.js query-string querystringparameter restify

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

如何最大限度地减少kafka消息传递框架中涉及的延迟?

场景:我有一个低容量主题(~150msgs/sec),我们希望从生产者到消费者的传播延迟较低.

我从生产者处添加了一个时间戳,并在消费者处读取它以记录传播延迟,默认配置msg(20个字节)显示传播延迟为1960ms到1230ms.因为没有网络延迟,我在同一台机器上尝试了1个生产者和1个简单的消费者.

当我尝试将主题刷新间隔调整为20ms时,它会下降到1100ms到980ms.然后我尝试将消费者调整"fetcher.backoff.ms"到10毫秒,它下降到1070毫秒 - 860毫秒.

问题:对于msg的20个字节,我希望传播延迟尽可能低,并且~950ms是更高的数字.

问题:我在配置中遗漏了什么?我欢迎您的评论,延迟至少.

假设:Kafka系统涉及消费者从生产者获取消息之前的磁盘I/O,这与硬盘RPM等有关.


更新:尝试调整日志刷新策略的持久性和延迟.
以下是配置:

# The number of messages to accept before forcing a flush of data to disk
log.flush.interval=10
# The maximum amount of time a message can sit in a log before we force a flush
log.default.flush.interval.ms=100
# The interval (in ms) at which logs are checked to see if they need to be 
# flushed to disk.
log.default.flush.scheduler.interval.ms=100
Run Code Online (Sandbox Code Playgroud)

对于20字节的相同消息,延迟为740ms-880ms.

以下语句在配置本身中已明确说明.
有一些重要的权衡:

  1. 耐用性 …

apache-kafka

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