我已经创建了一个api,以获取与pincode相关的区域详细信息。当我输入pincode时,它会显示该pincode的区域详细信息。但有时我的数据库中不存在pincode及其相关详细信息,所以我需要调用它通过公共api并将该密码和区域详细信息存储在我的database.my集合中,该集合具有不同的字段名称,例如我的集合中的state和public api json数据中的state_name,那么该怎么做?
代码:
router.get('/pincode/:pincode',function(req, res) {
Pincode.find({pincode : req.params.pincode}, function(error, pincode ) {
if(pincode == ''){
var request = require('request');
console.log();
res.statusCode = 302;
request('http://postalpincode.in/api/pincode/'+req.params.pincode, function (error, res, body) {
if (res.statusCode === 200) {
var pincodeData = new Pincode({
pincode:req.params.pincode,
body:body.PostOffice
});
pincodeData.save(function (err,results) {
if (err) {
return err;
}
else {
console.log(body);
}
});
}
});
}
res.json(pincode);
});
});
答案 0 :(得分:0)
我还没有对代码进行过测试,但方法应该是正确的。 为了更改字段名称,我现在能想到的是更改JSON对象。您可以查看是否在Mongoose Middleware上找到了可以在您的案例中使用的内容。但我所做的也应该有效。
var request = require('request');
router.get('/pincode/:pincode',function(req, res) {
Pincode.find({pincode : req.params.pincode}, function(error, pincode ) {
if(pincode.length){
request('http://postalpincode.in/api/pincode/'+req.params.pincode, function (error, res, body) {
//For changing field name
body.postOffice.forEach(function(entry, index){
body.postOffice[index]["state"] = body.postOffice[index]["state_name"];
delete(body.postOffice[index]["state_name"]);
});
pincodeData.update({pincode:req.params.pincode},{$push:{"body":body.PostOffice}}, {new:true, upsert: true}, function(err, docs){
res.json(docs);
});
});
}
else{
res.json(pincode);
}
});
});