查询完成之前的Express.js / Node.js响应

时间:2016-12-17 19:07:18

标签: node.js mongodb express mongoose esp8266

当POST和GET从Postman或chrome rest应用程序等发送时,我有一个功能正常的本地服务器。但是,无论何时我从ESP8266发送它都会失败,因为它遵循:

这是我的服务器端代码:

router.get('/', function (req, res) {
var person = req.query.id;
console.log("1");
Person.find({person: personID} ,function (err, station) {
    if(err) console.log(err.message);

    console.log("3");
    res.send('test');
    console.log("4");
});

console.log("2");
});

以下行是从 Chrome 发送请求时来自控制台。

1
2
3
4
GET /api?id=ABKWTltz6Ug 200 21.829 ms - -

以下行是从 ESP8266 发送请求时来自控制台。

1
2
GET /api?id=ABKWTltz6Ug - - ms - -
3
4

您可能会注意到,在 GET响应行之后,日志3和4 。我的ESP8266 TCP连接线与HTTP Message Format匹配:

GET /api HTTP/1.1
Host: *SERVER_IP_ADDRESS*

当我们从PHP切换到NodeJS后端服务器时出现的问题。 ESP8266用于连接和操作,没有问题。如果我删除Person.find代码块并移动res.send('test'),那么一切也工作正常。外部。

另一个新编写的后端代码,希望能够发现错误,如下所示。这是整个代码。这也返回了我之前提到的相同错误:

var express = require('express');
var app = express();
var router = express.Router();
var mongoose = require('mongoose');
var morgan = require('morgan');


app.use(morgan('dev'));

mongoose.connect('mongodb://localhost/test');


//mongoose.Promise = Promise;
var Test = mongoose.model('Test', { name: String });

router.get('/test', function (req, res) {

    console.log("1");
    var test1 = new Test({
      name: "Name"
    });

    var query = test1.save();

    query.then(function (doc) {
        res.send('1').end();
        console.log('3');
    });

    console.log("2");
});

app.use('/api', router);

var port = 9000;
app.listen(port,function(){
    console.log('server started on', port);

});

0 个答案:

没有答案