我目前有一个基于meanjs堆栈样板的设置,我可以让用户登录这种"登录"状态,因为我浏览网站的URL.这是因为将用户对象保存在全局可用的服务中.
但是这只适用于我从我的基础导航,即从'/'导航,并仅在我的应用程序中导航.
如果我手动输入诸如'/ page1'之类的URL,它将丢失全局用户对象,但是如果我转到我的根主页并通过该站点导航到'/ page1'.然后没关系,它会在Service对象中看到全局用户对象.
所以我想这是因为整页刷新失去了全局值,在这里通过网站导航不会刷新,所以你保留所有的变量.
有些事情需要注意:
我只是想知道人们一般在这做什么?他们是否还原标准cookie和本地存储解决方案?我对角度很新,所以我猜这里有图书馆.
我只是想知道处理这个或大多数人做什么的推荐方法,所以我正确地以正确的方式和角度方式对齐.
更新:
如果我通过地址栏手动导航到我网站上的另一个URL,我将失去用户状态,但是如果我通过地址栏手动返回我的根目录,我的用户状态会再次出现,所以这不仅仅是关于失去状态在窗口刷新.所以它似乎与在根URL上运行的代码有关.
我有一个明确的重写,手动输入的URL(由于HTML5位置模式)应首先返回index.html,因为它包含AngularJs文件,然后UI-Route接管并正确路由它.
所以我原本预计root上的任何代码都会执行,所以它应该类似于通过站点导航或键入地址栏.我一定错过了具有这种效果的Angular.
更新2
对,所以更多的调查引导我这样:
<script type="text/javascript">
var user = {{ user | json | safe }};
</script>
Run Code Online (Sandbox Code Playgroud)
这是index.html的服务器端代码,我想这是通过手动URL将页面刷新到新页面时不运行的.
使用哈希爆炸模式,它是有效的,这是因为使用哈希爆炸模式,即使我在浏览器中键入URL,它也不会导致刷新,在使用HTML5模式时,它会刷新.所以现在我能想到的解决方案是使用sessionStorage.
除非有更好的选择?
更新3:
使用HTML5Mode时,处理此问题的最佳方法是,您只需要在快速服务器上重写一些其他内容.
我正在使用MEAN.JS(https://github.com/meanjs/mean)和angular-file-upload(https://github.com/danialfarid/angular-file-upload).
MEAN.JS提供的"Article"样本包含两个名为"title"和"content"的字段.我想修改它并添加一个"图片"字段,允许用户上传图片.
我知道我必须在MEAN.JS中修改3个文件:
~myproject/app/models/article.server.model.js
~myproject/public/modules/articles/controllers/articles.client.controller.js
~myproject/public/modules/articles/views/create-article.client.view.html
Run Code Online (Sandbox Code Playgroud)
但是,我无法成功修改它们.
我已经使用MEAN-JS开发了Office 365应用-即Express和Node.js。它可以在Excel桌面环境中正常运行,但是在Excel的Web应用程序环境中运行时,当应用程序加载到框架中时出现此错误:
Sys.ArgumentNullException:值不能为null。参数名称:constructionId
文件:excel-web-16.00.js,行:11,列:49669
据我所知,constructionId应该是邮件应用程序API的一部分,而不是Excel应用程序。所以我不确定为什么Excel-Web-16.00.js API正在寻找此参数?
我已经通过将应用程序清单加载到Office 365开发人员Sharepoint网站中,然后运行Excel Online并插入应用程序来设置Excel Web的测试环境。
有人遇到过吗?
谢谢你的帮助。
我是猫鼬的新手.我使用"Date"作为我的"holidayDate"列的类型.我想在我的"holidayDate"列中只存储日期而不是时间,所以有没有办法在域模型中定义日期格式,所以当我的域名保存时,我的"holidayDate"列值将根据域模型的日期格式保存.
var HolidaySchema = new Schema({
holidayName: {
type: String,
default: '',
required: 'Please fill holiday name',
trim: true
},
holidayDate: {
type: Date,
required: 'Please fill From Date'
}
});
mongoose.model('Holiday', HolidaySchema);
Run Code Online (Sandbox Code Playgroud) 我正在研究一个mean.js堆栈应用程序.当我尝试调用我的某个模型的静态函数时,我收到错误'SomeItem.createNew不是函数'
我从另一个不同模式的静态方法调用这个静态方法,就像这样.
不起作用:
var SomeItem = require('./some-item.js');
aSchema.statics.createNew = function(body, cb) {
var newA = new this();
//create child items
for (i = 0; i < body.someItems.length; i++ {
SomeItem.createNew(body.someItems[i], function(err, item) {
}
}
Run Code Online (Sandbox Code Playgroud)
工作:
aSchema.statics.createNew = function(body, cb) {
var newA = new this();
var SomeItem = require('./some-item.js');
//create child items
for (i = 0; i < body.someItems.length; i++ {
SomeItem.createNew(body.someItems[i], function(err, item) {
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我将require放在静态函数内部,它可以正常工作.为什么是这样?我想只需要在顶部声明'var SomeItem'一次,而不是在我需要使用它的每个函数中声明.
我很有趣的接近 (注销/登出) 的所有用户会话中的NodeJS。
req.logout()
仅关闭用户的当前会话。但是对于我的安全面板,我想添加关闭所有用户会话的选项。我怎样才能做到这一点?
我正在使用MEAN.JS 框架。使用passport.js库和mongoDB来保存会话:
// Express MongoDB session storage
app.use(session({
saveUninitialized: true,
resave: true,
secret: config.sessionSecret,
cookie: {
maxAge: 15778476000,
httpOnly: true,
secure: false
},
key: 'sessionId',
store: new mongoStore({
db: db.connection.db,
collection: config.sessionCollection
})
}));
Run Code Online (Sandbox Code Playgroud)
非常感谢。
我正在尝试运行基于vagrant的mean.js项目,但是我在vagrant up
命令ubuntu 14.04 LTS 64 bi
t 上遇到以下错误.
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.
Command: ["startvm", "d660b7d6-06a3-49bc-8b90-cbad92632c11", "--type", "headless"]
Stderr: VBoxManage: error: The virtual machine 'pets_default_1473142645576_38190' has terminated unexpectedly during startup with exit code 1 (0x1)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component MachineWrap, interface IMachine
Run Code Online (Sandbox Code Playgroud)
请帮我解决这个问题.
我正在构建一个跨系统管理应用程序,它将用作多个后端系统的管理工具。该应用程序建立在 Mean.js 之上。
我已经/proxy
使用“express-http-proxy”设置了一个路由,将所有子路由发送到它们各自的后端系统端点。但是,在“express-http-proxy”可以继续之前,我需要在我的管理应用程序中对每个请求进行身份验证,然后使用目标后端系统凭据进行修饰。这是我的/proxy
路线的一个例子......
app.use('/proxy', users.requiresLogin, expressHttpProxy(config.backendSystem.host, {
forwardPath: function (req) {
return '/1.0' + require('url').parse(req.url).path;
},
decorateRequest: function (req) {
req.headers['content-type'] = 'application/json';
req.headers['backend-system-id'] = config.backendSystem.id;
req.headers['backend-system-key'] = config.backendSystem.key;
return req;
}
}));
Run Code Online (Sandbox Code Playgroud)
注意:
当前 backendSystem 凭据是根据我的管理应用程序运行的环境存储的。但是,将来 backendSystem 凭据将由用户指定,并且此/proxy
路由将与当前显示的不同。
问题:
需要请求正文中的数据的代理路由不起作用。
例如POST /comments {"user": user_id, "text": "rabble rabble rabble"}
我发现了什么:
bodyParser.json()
和“express-https-proxy”不太好。我已经通过bodyParser.json()
从express.js
. 然而,这不是一个完整的解决方案,因为几乎所有的其他路线的需要bodyParser.json
,例如/auth/signin
。
有没有人有一种干净的方法可以让我的路线例外,/proxy
这样bodyParser.json
就不会被调用?
如何为MEAN js应用程序的每个页面添加动态标题.在layout.server.js中定义了如下标题.
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{{title}}</title>
Run Code Online (Sandbox Code Playgroud)
那我们怎样才能制作动态片头?
我有一个这样的约会
2017-06-23 我想要的输出是
2017 年 6 月 23 日星期五
v.npi.appointment_dates[j] = date.toLocaleString('en-US', {year: 'numeric', month: 'long', day: 'numeric' });
Run Code Online (Sandbox Code Playgroud)
但由于 day: 'numeric' 我错过了日期名称。谁能帮帮我吗?
meanjs ×10
node.js ×8
express ×2
javascript ×2
mongodb ×2
angularjs ×1
date ×1
excel ×1
mongoose ×1
office365 ×1
passport.js ×1
proxy ×1
time ×1
ubuntu-14.04 ×1
vagrant ×1
virtualbox ×1