我是NodeJS的新手。我在服务器端使用NodeJS。我试图做一个简单的基于REST的GET请求,它从用户处获取搜索参数searchvar
,并返回在JSON数组中找到的匹配记录。我的服务器代码如下:如何在客户端nodejs处理异步请求?
http://localhost:3000/search?searchvar=aa
我得到如下回应:
var express = require('express');
var app = express();
var MongoClient = require('mongodb').MongoClient;
var assert = require('assert');
var ObjectId = require('mongodb').ObjectID;
var url = 'mongodb://localhost:27017/mydb';
app.get('/search', function(req, res) {
res.set({ 'content-type': 'application/json; charset=utf-8' });
res.header("Content-Type", "application/json; charset=utf-8");
res.charset = 'utf-8';
var searchvar = req.query.searchvar;
if(searchvar != null) {
var recordsArray = new Array();
console.log("searchvar :: " + searchvar);
MongoClient.connect(url, function(err, db) {
var cursor = db.collection('myCollections').find({"name": new RegExp(searchvar)});
cursor.each(function(err, doc) {
//assert.equal(err, null);
if (doc != null) {
var tempObject = {"name": doc.name, "cat": doc.cat};
recordsArray.push(tempObject);
console.dir(doc);
} else {
db.close();
}
});
if(recordsArray.length > 0) {
console.log("if........");
res.json({"status": "SUCCESS", "message": "The request processed successfully.", "records":recordsArray});
} else {
console.log("else........");
res.json({"status": "FAILURE", "message": "No records found corresponding to given search query."});
}
});
} else {
res.json({"status": "FAILURE", "message": "The searchvar is missing."});
}
//res.send('id: ' + req.query.id);
});
app.listen(3000);
当我与下列网址中的RESTClient实现调用它在浏览器中
{ “地位”: “FAILURE”,“message”:“找不到与给定搜索查询对应的记录”。}
这是一个异步调用。我想知道服务器使用哪个进程,当处理完成时可以返回响应,并在客户端处理这个异步响应。 在此先感谢。
任何调用服务器,你认为是一个异步过程将严格在客户端处理。在客户端,您正在向服务器发起AJAX调用,然后将控制权交还给调用它的脚本,并返回一个包含AJAX请求状态的对象。创建AJAX请求的代码负责定期检查AJAX对象是否已收到响应,然后它必须对其执行操作。幸运的是,有许多抽象通过承诺和/或回调的形式使这更容易。浏览器或节点客户端也是如此。 –