我是学习Node和Express的新手,我仍然试图用快速包围代码流.假设我们在session.js中有这样的代码:
app.post('/session', notLoggedIn, function(req, res) {
User.findOne({
username: req.body.username,
password: req.body.password
}, function (err, user) {
if (err) {
return next(err);
}
if (user) {
req.session.user = user;
res.redirect('/users');
} else {
res.redirect('/session/new');
}
});
});
Run Code Online (Sandbox Code Playgroud)
假设User是必需的mongo架构.我发现奇怪的是session.user赋值:
req.session.user = user;
Run Code Online (Sandbox Code Playgroud)
由于req变量在重定向后将超出范围,但我们显然是这样做是为了持久保存用户数据,我只想弄清楚以下哪个场景描述了正在发生的事情.(A)被分配给req参数的参数(当调用回调时)被存储/仍在堆栈中的某个地方,(B)会话存储在堆栈上并被分配给新的req对象之前传入回调,或(C)与B相同,但在用户字段上(似乎不太可能,也许我可能做作).
我在我的控制台中运行了以下行(一旦加载了jquery脚本),并收到以下结果:
$(this)
> [Window]
$(this) != $(this)
> true
$(this) == $(this)
> false
$(this) === $(this)
> false
Run Code Online (Sandbox Code Playgroud)
而且我不知道采取什么措施来弄清楚发生了什么.我的猜测是,有一些对象持有基于时间的值正在改变,但我想知道它是否有所不同.我会尝试在此期间比较这些值,但我希望有人可能会理解这里发生了什么.
编辑以解决我不知道$(arg)的底层实现的问题.我不知道它返回了一个新的引用对象.因此,我不相信这是"如何确定两个JavaScript对象的相等性?"的副本.
我有以下注册方法,我发誓我(手动)测试了这个方法一段时间,并注意到如果用户名已经存在,则结果只是 result.Succeeded 的错误值,并将错误消息附加到 ModelState (使用AddErrors(result) 辅助方法中的构建)。我非常确定此方法 ( Register(...)) 是 ASP.NET mvc 5 中开箱即用的,但我认为我更改了用户以包含用户名(而开箱即用时,电子邮件仅用作用户名)。
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.Username, Email = model.Email };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
return RedirectToAction("Index", "Home");
}
AddErrors(result);
}
// If we got this far, something failed, redisplay form
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
相反,我目前收到的错误是 EntityValidationError 被抛出且未被捕获。
我知道我可以简单地捕获此错误并继续我的一天,但我想确保如果不是正确的行为,是否是其他原因导致了此问题。
更新:
创建新的 MVC 项目后,我可以确认典型的行为(注册重复的用户名时)是 CreateAsync …
我是AngularJS的新手,并且学习了两种编写控制器函数的方式.似乎有人不使用显式注释的唯一原因是节省时间,这似乎不是一个好理由.并且能够缩小/混淆代码似乎是我想要保留在任何应用程序中的要求.
另请注意,我不是问哪个更好还是要求辩论.我问的是什么原因(或在什么情况下)不使用显式注释会更有益.
我在说什么的例子:
module('myApp').controller('MyController', function($scope) {});
Run Code Online (Sandbox Code Playgroud)
与
module('myApp').controller('MyController', ['$scope', function($scope) {}]);
Run Code Online (Sandbox Code Playgroud) javascript dependency-injection angularjs angularjs-controller
当我创建新的 javascript 文件时,会在文件顶部添加类似注释的模板,如下所示:
/**
* Created by User on 2015-03-29.
*/
Run Code Online (Sandbox Code Playgroud)
我想修改这个模板,但我无法弄清楚如何修改。
在设置页面中,我尝试搜索“IDE 设置”、“文件和编码模板”(我相信它在 PHPStorm 中)、“版权”(如 IntelliJ 中)、“标题”、“模板”、 “评论”以及这些术语的不同组合。但这些术语都没有产生任何相关的结果。在 google 上搜索很困难,因为大多数链接会将您带到 PHPStorm 或 IntelliJ 帮助文档。
也许我的谷歌今天关闭了......
javascript ×3
angularjs ×1
asp.net ×1
asp.net-mvc ×1
c# ×1
express ×1
jquery ×1
node.js ×1
session ×1
webstorm ×1