标签: meanjs

AngularJS - 处理手动输入URL的最佳方式

我目前有一个基于meanjs堆栈样板的设置,我可以让用户登录这种"登录"状态,因为我浏览网站的URL.这是因为将用户对象保存在全局可用的服务中.

但是这只适用于我从我的基础导航,即从'/'导航,并仅在我的应用程序中导航.

如果我手动输入诸如'/ page1'之类的URL,它将丢失全局用户对象,但是如果我转到我的根主页并通过该站点导航到'/ page1'.然后没关系,它会在Service对象中看到全局用户对象.

所以我想这是因为整页刷新失去了全局值,在这里通过网站导航不会刷新,所以你保留所有的变量.

有些事情需要注意:

  1. 我已启用HTML5Mode,使用前缀'!'.
  2. 我使用UI-Router
  3. 我用'/'标签
  4. 我有一个关于快递的重写规则,在加载我的所有路由后,我有一个最后一个路由,它接受所有'/*'并发回root index.html文件,因为这是angularjs的东西.

我只是想知道人们一般在这做什么?他们是否还原标准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时,处理此问题的最佳方法是,您只需要在快速服务器上重写一些其他内容.

javascript node.js express angularjs meanjs

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

使用Angular-file-upload将图片添加到MEAN.JS示例

我正在使用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)

但是,我无法成功修改它们.

angular-file-upload meanjs

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

Office Web App for Excel Web:“值不能为空。参数名称:constructionId”

我已经使用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的测试环境。

有人遇到过吗?

谢谢你的帮助。

excel node.js office365 meanjs

5
推荐指数
0
解决办法
353
查看次数

mongoose如何在模型中设置日期格式

我是猫鼬的新手.我使用"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)

mongoose mongodb node.js meanjs

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

调用静态函数返回'不是函数'

我正在研究一个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'一次,而不是在我需要使用它的每个函数中声明.

node.js meanjs

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

NodeJS 注销所有用户会话

我很有趣的接近 (注销/登出) 的所有用户会话的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)

非常感谢。

mongodb node.js meanjs passport.js

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

VBoxManage:错误:详细信息:带有meanjs和vagrant的代码NS_ERROR_FAILURE(0x80004005)

我正在尝试运行基于vagrant的mean.js项目,但是我在vagrant up命令ubuntu 14.04 LTS 64 bit 上遇到以下错误.

        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)

请帮我解决这个问题.

virtualbox node.js vagrant ubuntu-14.04 meanjs

4
推荐指数
3
解决办法
2214
查看次数

调用 bodyParser.json() 后如何使用“express-http-proxy”?

我正在构建一个跨系统管理应用程序,它将用作多个后端系统的管理工具。该应用程序建立在 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就不会被调用?

proxy node.js express meanjs

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

MEAN js动态冠军

如何为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)

那我们怎样才能制作动态片头?

node.js meanjs

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

如何在node js中获取日期中的日期名称

我有一个这样的约会

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' 我错过了日期名称。谁能帮帮我吗?

javascript time date meanjs

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