我想了解在客户端检查登录状态的最佳做法是什么.我要做的是检查用户的登录状态,如果他没有使用JavaScript登录打开的弹出框(登录框).
我可以想到2个选项
选项1很好,但它可以增加一些延迟/延迟,因此它可能不是用户体验方面的最佳选择.或者我错了,有一个好的服务器(我打算使用亚马逊网络服务)这种延迟将是如此最小,用户将无法理解它(问题可能看起来很傻但这是我的第一个网站开发,所以请理解:))
我看不到选项2的任何问题,如果我错了请纠正我.正如我所说,我试图了解最佳实践.
请考虑以下用于其余API节点服务器的代码.
var restify = require('restify');
var server = restify.createServer();
server.get('/echo/:name', function (req, res, next) {
res.send({name: req.params.name});
next();
});
server.listen(8080, function () {
console.log('%s listening at %s', server.name, server.url);
});
Run Code Online (Sandbox Code Playgroud)
使用节点运行该服务器:
$ node echo.js
restify listening at http://0.0.0.0:8080
Run Code Online (Sandbox Code Playgroud)
它显示0.0.0.0哪个是错的.
任何人都可以在开启时如何控制台登录服务器的确切IP?
谢谢
rest_server.listen(config.appPort, function () {
var adrs = require('os').networkInterfaces();
console.log(adrs);
console.log('%s listening at %s', rest_server.name, rest_server.url);
});
Run Code Online (Sandbox Code Playgroud)
输出:
{ 'Local Area Connection': [ { address: '192.168.3.60', family: 'IPv4', internal
: false } ],
'Loopback Pseudo-Interface 1': …Run Code Online (Sandbox Code Playgroud) 考虑以下是我的数组
[
{"id":10,"name":"name10","valid":true},
{"id":12,"name":"name12","valid":false},
{"id":11,"name":"name11","valid":false},
{"id":9,"name":"name9","valid":true}
]
Run Code Online (Sandbox Code Playgroud)
创建了一个JsonArray,就像下面的代码一样:
//Create a JSON Parser using GSON library
objJsonParser = new JsonParser();
String strArrayText = [{"id":9,"name":"name9","valid":true}, ...]
JsonArray jsonArrayOfJsonObjects = objJsonParser.parse(strArrayText).getAsJsonArray();
Run Code Online (Sandbox Code Playgroud)
现在,我正在尝试jsonArrayOfJsonObjects根据name字段进行排序.
期望的输出:
[
{"id":9,"name":"name9","valid":true},
{"id":10,"name":"name10","valid":false},
{"id":11,"name":"name11","valid":false},
{"id":12,"name":"name12","valid":true}
]
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助解决与Java&Gson相关的最佳应用程序吗?
非常感谢您的投入.
考虑这是我的文件夹结构
express_example
|---- app.js
|---- models
|-------- songs.js
|-------- albums.js
|-------- other.js
|---- and another files of expressjs
Run Code Online (Sandbox Code Playgroud)
我的文件songs.js中的代码
var mongoose = require('mongoose')
, Schema = mongoose.Schema
, ObjectId = Schema.ObjectId;
var SongSchema = new Schema({
name: {type: String, default: 'songname'}
, link: {type: String, default: './data/train.mp3'}
, date: {type: Date, default: Date.now()}
, position: {type: Number, default: 0}
, weekOnChart: {type: Number, default: 0}
, listend: {type: Number, default: 0}
});
mongoose.model('Song', SongSchema);
Run Code Online (Sandbox Code Playgroud)
在文件albums.js中
var mongoose = …Run Code Online (Sandbox Code Playgroud) 请考虑以下示例代码:
1.Sample
var IsAdminUser = (User.Privileges == AdminPrivileges)
? 'yes'
: 'no';
console.log(IsAdminUser);
Run Code Online (Sandbox Code Playgroud)
2.Sample
var IsAdminUser = (User.Privileges == AdminPrivileges)?'yes': 'no';
console.log(IsAdminUser);
Run Code Online (Sandbox Code Playgroud)
第二个样本我非常满意并且我以这种方式编码,但是在没有任何支持性原因的情况下,它被告知错误的做法.
为什么建议不在Node.js中使用单行三元运算符?
任何人都可以说明原因吗?
提前感谢您的大力帮助.
考虑我的集合在MongoDB中存储如下:
{
_id: 'Unique_Value',
FieldMONGO1: 'ngfn',
FieldMONGO2: { SomeKey: ['val1','val2','val...'] },
}
Run Code Online (Sandbox Code Playgroud)
当我在Mongoose的Model Instance上使用find方法检索时.我得到以下JSON输出:
{
_id: 'Unique_Value',
FieldMONGO1: 'NAME_value',
FieldMONGO2: { SomeKey: ['val1','val2','val...'] },
}
Run Code Online (Sandbox Code Playgroud)
两者完全相同.
问:有没有什么办法让我可以改变字段名称,如FieldMONGO1到FirstName,FieldMONGO2到NewName&_id来IdentityNo?
所以我的输出将是这样的:
{
IdentityNo: 'Unique_Value',
FirstName: 'ngfn',
NewName: { SomeKey: [] },
}
Run Code Online (Sandbox Code Playgroud)
知道解决方案:是按原样获取JSON输出,然后在Node.js代码中更改字段(属性)名称.但问题在于,它变成了阻塞代码.如果请求大量数据,这可能会在服务器上产生开销.
任何人都可以帮我找出一些有效的方法吗?
提前谢谢
场景:考虑一个与用户名和密码匹配的登录系统(Node.js + Express + Socket.IO),并允许用户访问经过身份验证的页面.登录系统将会话ID存储为客户端的cookie,并在服务器上对每个经过身份验证的页面请求进行验证,并相应地允许/禁止.
问题:现在,假设同一用户从不同的机器或浏览器登录,我希望以前的用户推送到会话过期页面并显示信息,例如:"您可能从不同的浏览器或机器登录.请不要分享密码.欲了解更多信息,请访问:SomeLinkHere"
注意:我只是不想让用户登录会话无效,当用户从其他浏览器或机器登录时,我想将用户推送到会话过期页面,即使用户没有点击任何链接或请求任何进一步的身份验证页面.
这背后的主要目的是:避免这样的情况,例如:"如果用户正在观看一些敏感数据,例如实时报告(即socket.io上的仪表板),并将密码分享给其他人."
问题:由于socket.io已经用于报告实时数据,如何在不重载现有socket.io连接的情况下实现这一点?
场景:考虑一下,我在MongoDB中有以下集合:
{
"_id" : "CustomeID_3723",
"IsActive" : "Y",
"CreatedDateTime" : "2013-06-06T14:35:00Z"
}
Run Code Online (Sandbox Code Playgroud)
现在我想知道特定日期创建文档的计数(比如2013-03-04)所以,我试图使用聚合框架找到解决方案.
信息:到目前为止,我已经构建了以下查询:
collection.aggregate([
{ $group: {
_id: '$CreatedDateTime'
}
},
{ $group: {
count: { _id: null, $sum: 1 }
}
},
{ $project: {
_id: 0,
"count" :"$count"
}
}
])
Run Code Online (Sandbox Code Playgroud)
问题:现在考虑上面的查询,它给我计数.但不仅仅基于日期!它花费时间考虑到独特的数量.
问题:考虑到该字段具有ISO日期,任何人都可以告诉我如何仅根据日期(即排除时间)来计算文档?
我有JSON数组如下:
{outer:[
{
Key1:"ID001",
Key2:[
{
innerKey1:"Myval1",
innerKey2:"Myvalue2"
}
]
}
]}
Run Code Online (Sandbox Code Playgroud)
现在在我的HTML文件中:
<div>
{{#each outer}}
<b>key1:</b> {{this.Key1}} <br/>
{{#each this.Key2}}
<b>InnerKey1:</b> {{this.innerKey1}} <br/>
{{/each}}
{{/each}}
</div>
Run Code Online (Sandbox Code Playgroud)
但它没有表现出任何内在价值.任何人都可以请求如何循环内部数组对象(即Key2上面).我需要为此编写一个单独的帮助程序吗?
我在一篇文章中读到 Node.js 是单线程的。问题是如果我们在不同的端口运行多个 Node.js 文件怎么办?它们是否有自己的线程,或者全部都在 Node.js 主线程下?有人可以阐明我现在处于黑暗面的主题吗?