Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 快速和实时应用程序。将更新从客户端持久化到服务器持久化到客户端_Javascript_Node.js_Authentication_Express_Mongoose - Fatal编程技术网

Javascript 快速和实时应用程序。将更新从客户端持久化到服务器持久化到客户端

Javascript 快速和实时应用程序。将更新从客户端持久化到服务器持久化到客户端,javascript,node.js,authentication,express,mongoose,Javascript,Node.js,Authentication,Express,Mongoose,我正在写一个实时应用程序。基本原则就像聊天,但用户共享youtube视频而不是短信。后端还没有完全完成,我不知道我将如何做。但是我有一些问题要问已经做了些什么 现在,使用user/pass、FB、Twitter进行用户身份验证工作正常,凭证存储在我的数据库中。用户登录也可以正常工作。错误消息得到flashed罚款 我在后端使用mongodb(mongoose)和express。它不是一个基于API的设计,因为我不知道如何在API中使用用户身份验证(我可以使用GET/POST/PUT/DELETE

我正在写一个实时应用程序。基本原则就像聊天,但用户共享youtube视频而不是短信。后端还没有完全完成,我不知道我将如何做。但是我有一些问题要问已经做了些什么

现在,使用user/pass、FB、Twitter进行用户身份验证工作正常,凭证存储在我的数据库中。用户登录也可以正常工作。错误消息得到
flash
ed罚款

我在后端使用mongodb(mongoose)和express。它不是一个基于API的设计,因为我不知道如何在API中使用用户身份验证(我可以使用GET/POST/PUT/DELETE API,只是不知道如何在API中使用身份验证)

例如,当用户登录使用主页时,将使用express.js路径中的
req.body.
验证凭据。如果经过身份验证,请将用户重定向到仪表板,否则将重定向到带有flash消息的
signin
。因此,没有Ajax调用,而且目前,该应用程序在任何方面都不是实时的。不过我希望它是实时的

为此,我有三个问题:


  • 我使用一个模式窗口(引导),要求用户更新配置文件。模式显示良好,但我想显示的字段未显示。密码和电子邮件字段为空,即使我有一个
    属性

    input.form-control.dash(type="password", name="newuserpassword", ng-minlength=8, ng-model="password", value="__USE_EXISTING__")
    input.form-control.dash(type="email", name="newuseremail", required=true, ng-model="email", value=user.email)
    

  • 我希望当用户编辑“保存”按钮时,模式中的一条消息应该显示如何显示任何错误,或者显示更新成功。事实上,目前我的更新方法并没有做到这一点。除了重定向用户,我不知道如何才能实现我想要的

    exports.update_user = function(req, res) {
        var user = new User({
            'username' : req.user.username,
            'password': req.body.newuserpassword || ,
            'email': req.body.newuseremail
        });
    
        console.log(user);
    
        user.save(function(err) {
            if (err) {
                console.log(err);
                for (var field in err.errors) {
                    var error = err.errors[field].message;
                    req.flash('error', error);
                }
                res.redirect('/dashboard');
            } else {
                req.logIn(user, function (err) {
                    if (!err) {
                        req.flash('success', 'Done!');
                    } else {
                        req.flash('error', 'Something went wrong.');
                    }
                });
            }
        });
    }
    
  • 用户通过单击“保存”更新值后,模式将关闭。用户仍然可以单击“编辑”链接再次更改值,模式将打开。现在,根据我读到的内容,用户不会看到更改,因为没有页面/模式重新加载。如何确保用户看到更新的值



  • 非常感谢您的帮助。

    当我阅读您的文字时,我想: “哼,他试图进行Ajax调用,让视图显示错误或继续”

    当我阅读你的代码时,我想: “哼,这是一个同步”给我所有的页面“呼叫”

    你想要哪个版本

    异步的那个?因此,我们可以向您解释Ajax原理,您真正的问题是UI更新。
    同步的那个?这肯定是一个UI问题,您应该为它添加一个标记。

    我从node/express stack开始,所以我不知道我说得含糊不清。我将编辑这篇文章以包含更多细节。还有,你为什么说代码是同步的?这些方法用于回调,我不是说服务器内部堆栈,而是说完整的堆栈。如果提交失败,您是否希望发布一篇文章并刷新带有错误的整个网页?如果提交成功,是否希望刷新另一页?或者您希望视图对服务器进行异步调用,该调用使用json响应将被修改的当前视图?理想情况下是后者。这将有助于使我的应用程序实时,无需刷新页面。但如果出现错误或成功,您的代码将呈现完整的html页面。。。没有?现在有了。但为了获得更动态的感觉,我希望这样:用户单击“编辑配置文件”,在当前页面顶部打开一个模式,用户更改密码,如果成功,关闭模式,如果不成功,在不重新加载页面的情况下,在模式内显示错误。有人有任何输入吗?