Express EJS模板如何传递json对象来查看它是否是未定义的
当用户login时,我将用户分配给window.user对象供客户端使用
请注意,我使用passport.js,这意味着当用户进行身份validation时,req.user将是一个有效的mongoose模型对象。 否则req.user将被定义
passport.deserializeUser(function(id, done) { User.findById(id, function(err, user) { done(err, user); }); });
locals.user被分配在我的路线中。 在我的路由中间件:
res.locals.user = JSON.stringify(req.user) //stringify in js instead of ejs, easier to write
最后一步,在我的ejs文件中:
<script type="text/javascript"> window.user = <%- (locals.user) || '' %> </script>
如果用户没有login,我应该通过“',还是'{}'或'空'? 在客户端,我最有可能使用angular.fromJson方法,它的文档很差: https ://docs.angularjs.org/api/ng/function/angular.fromJson
不过,我可能使用jQuery.parseJSON非angular度模块。 目前我使用空string,但我必须每次检查长度,这是tedius。
angular.fromJson使用javascript JSON.parse()方法
这里有一些虚拟代码来理解JSON.stringify和JSON.parse()。 您可以尝试切换评论,然后尝试使用null和{a:1}。
<script> var obj //var obj = null //var obj = {a: 1} var str = JSON.stringify(obj) //returns undefined (sent from express) str = (str || 'null') //assign 'null' string (in ejs) var o2 = JSON.parse(str) //angular client if (o2) { alert(o2.a) } else { alert('o2 is null') } </script>
所以简短的回答你的问题是:使用<%- (locals.user) || 'null' %>
<%- (locals.user) || 'null' %>
- AngularJS $ resource'GET'访问正确的API,但是'PUT'和'POST'不会
- meanjs路由到服务器控制器
- 当npm启动我的Angular2项目时,重复的标识符导出错误
- Browserify Crypto如何独立注入angular离子
- PassportJS – 在将有效载荷数据传递给passport.authenticate作为请求参数之前获取
- nodejs restful api返回错误状态-1在离子angularjs $ http
- 教程AngularJS-npm安装错误
- 不能npm安装angular手机教程:无法find模块'更新通知'
- 如何从angularjs $ http.post中读取/保存nodeJs中的json文件