小编Nic*_*olk的帖子

express req.session对象是如何保持的?

我是学习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相同,但在用户字段上(似乎不太可能,也许我可能做作).

javascript session node.js express

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

在JQuery中,为什么$(this)== $(this)返回false?

我在我的控制台中运行了以下行(一旦加载了jquery脚本),并收到以下结果:

$(this)
> [Window]
$(this) != $(this)
> true
$(this) == $(this)
> false
$(this) === $(this)
> false
Run Code Online (Sandbox Code Playgroud)

而且我不知道采取什么措施来弄清楚发生了什么.我的猜测是,有一些对象持有基于时间的值正在改变,但我想知道它是否有所不同.我会尝试在此期间比较这些值,但我希望有人可能会理解这里发生了什么.

编辑以解决我不知道$(arg)的底层实现的问题.我不知道它返回了一个新的引用对象.因此,我不相信这是"如何确定两个JavaScript对象的相等性?"的副本.

javascript jquery

6
推荐指数
1
解决办法
120
查看次数

当使用重复的用户名时,为什么 UserManage.CreateAsync 会抛出 EntityValidationError 而不是返回失败结果?

我有以下注册方法,我发誓我(手动)测试了这个方法一段时间,并注意到如果用户名已经存在,则结果只是 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 …

c# asp.net asp.net-mvc entity-framework asp.net-identity

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

在AngularJS中定义控制器时,为什么不使用显式注释?

我是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

4
推荐指数
1
解决办法
1977
查看次数

如何更改新文件创建时的模板注释?

当我创建新的 javascript 文件时,会在文件顶部添加类似注释的模板,如下所示:

/**
 * Created by User on 2015-03-29.
 */
Run Code Online (Sandbox Code Playgroud)

我想修改这个模板,但我无法弄清楚如何修改。

在设置页面中,我尝试搜索“IDE 设置”、“文件和编码模板”(我相信它在 PHPStorm 中)、“版权”(如 IntelliJ 中)、“标题”、“模板”、 “评论”以及这些术语的不同组合。但这些术语都没有产生任何相关的结果。在 google 上搜索很困难,因为大多数链接会将您带到 PHPStorm 或 IntelliJ 帮助文档。

也许我的谷歌今天关闭了......

webstorm

3
推荐指数
1
解决办法
2256
查看次数