小编lee*_*ell的帖子

Nginx,try_files代理和带有404回退的命名位置

我有一个奇怪的问题,它只影响我正在研究的一个本地应用程序 - 使用这种方法的其他应用程序似乎工作正常(Ghost).这是来自我的Nginx服务器配置:

location @node_proxy {
  proxy_set_header        X-Real-IP            $remote_addr;
  proxy_set_header        X-Forwarded-For      $remote_addr;
  proxy_set_header        X-Forwarded-Proto    $scheme;
  proxy_set_header        X-NginX-Proxy        true;
  proxy_set_header        Host                 $host;
  proxy_redirect          off;
  proxy_pass              http://127.0.0.1:5000;
}

location / {
  try_files @node_proxy =404;
}
Run Code Online (Sandbox Code Playgroud)

正如我所说,我有Ghost运行与此相同,它表现良好.但是对于这个配置,它会导致每个请求都是404 - 它似乎永远不会命中代理.我检查了日志,这证实了我的怀疑,访问或错误日志中没有条目.

我在这个实例中代理的应用程序只是一个简单的基于Express的节点应用程序,所以没有什么复杂的.访问http://127.0.0.1:5000我看到了预期的结果.

如果我将配置更改为:

location / {
  proxy_set_header        X-Real-IP            $remote_addr;
  proxy_set_header        X-Forwarded-For      $remote_addr;
  proxy_set_header        X-Forwarded-Proto    $scheme;
  proxy_set_header        X-NginX-Proxy        true;
  proxy_set_header        Host                 $host;
  proxy_redirect          off;
  proxy_pass              http://127.0.0.1:5000;
}
Run Code Online (Sandbox Code Playgroud)

它按预期工作,但我想使用命名位置,以避免重复代理声明.

我错过了一些明显的事吗?

proxy nginx

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

猫鼬和模型连接

我试图了解猫鼬如何使用它的连接.目前我有:

// Datastore.js
var mongoose = require('mongoose'),
    conn = mongoose.createConnection();

...

conn.open(host, database, port, options, callback); // Opens connection


// Model.js
var mongoose = require('mongoose');
var Schema = new mongoose.Schema({...})
module.exports = exports = mongoose.model('MyModel', Schema);


// Controller.js
var mongoose = require('mongoose');
var MyModel = mongoose.model('MyModel'); // Retrieves the model ok

MyModel.find({}, function(err, docs){
   if(err){} //
   console.log(docs); // Does not work
});
Run Code Online (Sandbox Code Playgroud)

但是这不起作用......它只有在我以某种方式传递连接时才有效:

// Datastore.js
var mongoose = require('mongoose'),
    conn = mongoose.createConnection();

...

conn.open(host, database, port, options, callback); //

mongoose.set('db', …
Run Code Online (Sandbox Code Playgroud)

mongoose node.js

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

Mongoose - 查询$或slug/id

我正在尝试创建一个可以通过slug或id进行查询的mongoose查询,但问题在于我不知道我将要处理哪一个,因为我将其作为Express路由:

app.get('/animals/dogs/:id', function (req, res, next) {
     Dogs.find({$or: [{slug: id}, {_id: id}]}, function (err, docs) {
         if (err) {
             return next(err);
         }
         // ....
     });
});
Run Code Online (Sandbox Code Playgroud)

我希望能够通过任何一种搜索,但是上面的方法会引发Invalid ObjectId错误.

另一种方法是嵌套查询,但这感觉有点麻烦:

app.get('/animals/dogs/:id', function (req, res, next) {
     Dogs.find({slug: id}, function (err, docs) {
         if (err) {
             return next(err);
         }
         if (!docs) {
             Dogs.findById(id, function (err, docs) {
             // ...
             });
         }
         // ....
     });
});
Run Code Online (Sandbox Code Playgroud)

有没有其他方法我没有考虑过?我知道我可以把我的slu into变成ObjectId,但如果可能的话我宁愿避免这个.

mongoose

4
推荐指数
2
解决办法
1307
查看次数

我应该使用process.nextTick吗?

我正试图在使用process.nextTick时解决问题.下面我使用异步库来控制我的代码流,并想知道我是否应该在最终回调中调用nextTick.

async.parallel([
    function (callback) {
        // do something
        callback(data);
    },
    function (callback) {
        // do something
        callback(data);        
    }
], 
// callback
function (data) {
    process.nextTick(function () {
        // do something
    });
});
Run Code Online (Sandbox Code Playgroud)

asynchronous node.js

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

标签 统计

mongoose ×2

node.js ×2

asynchronous ×1

nginx ×1

proxy ×1