小编Jay*_*ayC的帖子

在express中使用app.configure

我找到了一些代码,他们在没有使用的情况下设置Express app.configure,我想知道,使用之间的区别是什么app.configure没有环境说明符而不使用它什么?

换句话说,这有什么区别:

var app = require(express);

app.configure(function(){
    app.set('port', process.env.PORT || config.port);
    app.use(express.logger('dev'));  /* 'default', 'short', 'tiny', 'dev' */
    app.use(express.bodyParser());
    app.use(express.static(path.join(__dirname, 'site')));
}
Run Code Online (Sandbox Code Playgroud)

还有这个:

var app = require(express);

app.set('port', process.env.PORT || config.port);
app.use(express.logger('dev'));  /* 'default', 'short', 'tiny', 'dev' */
app.use(express.bodyParser());
app.use(express.static(path.join(__dirname, 'site')));
Run Code Online (Sandbox Code Playgroud)

谢谢.

node.js express

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

Mongoose:如何查询引用的对象属性?

我正在尝试根据属性子文档从我的数据库中获取文档列表.我正在使用的模型和模式是:

var elementSchema = new mongoose.Schema({
    name: String,
    description: String,

    _story: { type: mongoose.Schema.Types.ObjectId, ref: 'Story' },

    date_created: Date,
    date_modified: Date,
};
var storySchema = new mongoose.Schema({
    title: {type: String, default: '', trim: true},
    isPrivate: {type: Boolean, default: false},
});

mongoose.model("Story", storySchema);
mongoose.model("Element", elementSchema);
Run Code Online (Sandbox Code Playgroud)

我试图让属于一个故事,是不是私人所有元素,并根据一些帖子,我看到在这里(1,2,3)解决方案是使用_story.isPrivate与发现.我现在正在这样做:

Element.find({'_story.isPrivate': false})
         .populate('_story')
         .exec(function(err, elements){
             if(err){
                 return next(err);
             }
             else if(elements.length > 0){
                 return res.send(elements);
             }
             else{
                 return res.send(404, {message: "No elements found"});
             }
});
Run Code Online (Sandbox Code Playgroud)

但结果总是一个空集(返回404).没有条件,find返回所有元素并正确填充_story.我还激活了调试输出以查看正在执行的查询,我得到了这个:

Mongoose: elements.find({ '_story.isPrivate': …
Run Code Online (Sandbox Code Playgroud)

mongoose node.js express

12
推荐指数
1
解决办法
9407
查看次数

在通用/同构应用程序中组织package.json依赖项

使用React和其他框架,现在通常使用npm和package.json来安装您将在前端使用的库.如果您正在开发通用/同构应用程序,这会引入前端和后端的依赖项存储在同一文件中的问题,从而创建一个大规模的依赖项列表.

如果你使用npm --save/ - save-dev两种类型的依赖项(前端,后端)变得混合,很难知道,而不是一个接一个地使用哪一个.

除了手动排序和管理依赖列表之外,还有什么方法可以使列表保持整洁?您管理依赖项列表的策略是什么?

node.js npm reactjs isomorphic-javascript

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

阻止用户使用未保存的更改进行导航

我目前正在使用Backbone.Marionette来创建SPA,在其中一个视图中,用户可以使用未保存的更改进行导航.我可以控制其中一些事件,例如视图中的按钮和菜单选项,这会将用户带走,但是其他一些事件需要操作Backbone.Router或直接使用DOM事件.

我已经尝试过监听beforeunload(因为应用程序仍然加载hashchange不起作用)和(不起作用,因为你无法阻止浏览器导航).这些解决方案(1,2,3)不要在这种情况下工作时,JavaScript是永远不会卸载.

改变Backbone.Router似乎是最好的选择,但由于它是如何初始化的,我认为不可能引入这个功能,或者至少我找不到这样做的方法.例如,此解决方案不起作用,因为hashchange不可取消(您不能在其上调用stopPropagation),并且此其他解决方案不起作用,因为navigate未在Backbone.Router对象上定义.

有什么建议?

javascript jquery backbone.js

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

通用应用中的JWT身份验证(服务器端呈现)

通用或服务器端渲染会在将页面发送到客户端之前组成页面。那时,除非使用cookie,否则用户没有机会提交任何凭据。JWT鼓励使用LocalStorage而不是cookie来存储令牌,我认为这是一个好习惯。

我正在尝试为类似于博客的应用设置SSR。用户创建的内容可以是公开的(任何人都可以找到并阅读)或私有的(只有用户和协作者才可以找到并阅读)。在SSR上处理公共内容很容易,但是私有内容需要存储在LocalStorage中的令牌。

我能想到的最好的解决方案是发送一个存根,或者一个加载页面,客户端可以从中将凭据发送到服务器以检索私有内容。我看到的这种方法的问题是一种私密性:显示加载页面或存根会泄漏出该URL上实际上有内容,即使由于没有凭据而解析为404时也是如此。发送存根/加载页面以获取所有公共或私人内容的内容,将会破坏服务器端呈现的目的。

所以我的问题是,处理需要身份验证而不使用Cookie的呈现内容的最佳实践是什么?欢迎任何示例。尽管我目前使用的是Angular 5,但任何框架都可以。

authentication privacy jwt angular-universal react-universal

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

尝试连接到 Redis 返回 ECONNREFUSED

我有以下几点docker-compose.yml

version: '3'
services:
  web:
    build: .
    image: webapp
    env_file: .env.docker
    ports:
      - "3000:3000"
    links:
      - redis
      - mongo
  redis:
    image: "redis:alpine"
  mongo:
    image: "mongo"
Run Code Online (Sandbox Code Playgroud)

我使用以下环境变量连接到 Mongo 和 Redis

REDIS_URL=redis://redis:6379
DATABASE_URL=mongodb://mongo:27017/webapp
Run Code Online (Sandbox Code Playgroud)

使用此配置,当应用程序启动时,它可以连接到 Mongo 容器,但无法连接到 Redis,并出现以下错误:

Error: connect ECONNREFUSED 127.0.0.1:6379
Run Code Online (Sandbox Code Playgroud)

我尝试公开和映射端口:

    expose:
      - "6379"
    ports:
      - "6379:6379"
Run Code Online (Sandbox Code Playgroud)

但它仍然没有解决问题。映射端口 我可以使用 redis-cli 连接到 Redis,所以我知道容器正在运行。

有什么线索吗?

编辑:在没有 Docker 的情况下在我的机器上运行 webapp 正常工作。我尝试了本机 Redis 和 Mongo 以及运行docker-compose下面的注释web部分并映射端口。

编辑 2:输出 lsof

COMMAND    PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
com.docke …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

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

减慢Node.js中的响应

我正在使用Express over Node.js,我正在为我的应用程序加载视图(一个屏幕会在获取数据时显示)但是当我在本地测试时,显然没有延迟来自服务器,我无法看到屏幕是否正常工作.

是否有可能在Node.js中为所有响应引入延迟而无需为每个响应添加setTimeout?

我尝试了慢速代理,但它无法在HTML中加载绝对路径(例如/img/item.png被映射为而不是/proxy/2000/img/item.png).

javascript node.js

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

使用用户名或电子邮件进行身份验证

使用feathers-authentication,可以使用可配置的用户名字段对用户进行身份验证。目前,我可以配置身份验证以使用我的用户模型的usernameORemail字段,但我想向我们的用户提供两个选项usernameAND email

这样做的最佳方法是什么?

feathersjs

0
推荐指数
1
解决办法
581
查看次数