场景:考虑以下是节点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()
和一些重要区别?
我有一个以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 …
我正在尝试使用Node.js中的Mongoose使用用户名和密码连接到MongoDB数据库.所有文档都说连接字符串应该是这样的
mongodb://username:password@host:port/db
Run Code Online (Sandbox Code Playgroud)
但是,密码中包含"@"字符.我怎么能用这个mongoose能理解的连接字符串?我可以在密码中转义'@',还是有另一种连接方法我必须使用?
我有一个目录结构
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) 请考虑以下是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) 考虑一下,我有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>
有关于获取有关将独立转换为副本集的信息的文档,但有人可以告诉我如何从副本集转换回独立版本吗?
场景:
考虑以下是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) 我已经创建了一个Windows服务并将其安装在服务器上.它似乎工作得很好,即做其意图.但是当我通过远程桌面登录服务器时,我收到以下消息:
无法从命令行或调试器启动服务.首先必须安装Windows服务(使用installutil.exe),然后使用ServerExplorer,Windows服务管理工具或NET START命令启动.
我点击然后转到服务资源管理器检查服务,它开始正常.没有错误报告.
我安装了这个,所以它使用Local System作为"Log On As".
谢谢.
场景:我们的开发人员正在尝试用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
场景:我有一个低容量主题(~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.
以下语句在配置本身中已明确说明.
有一些重要的权衡:
node.js ×6
mongodb ×3
express ×2
javascript ×2
json ×2
apache-kafka ×1
bower ×1
c# ×1
connect ×1
file ×1
go ×1
mongoose ×1
query-string ×1
replicaset ×1
restify ×1
service ×1
v8 ×1
windows ×1