我刚在bluemix上创建了一个NodeJS cloudantDB Web启动器。然后,我有一个API从cloudantDB获取数据并获得成功,但它返回所有数据。请参阅js文件:
js file:
app.get('/api/provider', function(request, response) {
console.log("Get method invoked.. ")
db = cloudant.use(dbCredentials.dbProvider);
var docList = [];
var i = 0;
db.list(function(err, body) {
if (!err) {
var len = body.rows.length;
console.log('total # of docs -> '+len);
if(len == 0) {
// error
} else {
body.rows.forEach(function(document) {
db.get(document.id, { revs_info: true }, function(err, doc) {
if (!err) {
if(doc['_attachments']) {
// todo
} else {
var responseData = createResponseDataProvider(
doc._id,
doc.provider_type,
doc.name,
doc.phone,
doc.mobile,
doc.email,
doc.logo,
doc.address
);
}
docList.push(responseData);
i++;
if(i >= len) {
response.write(JSON.stringify(docList));
console.log('ending response...');
response.end();
}
} else {
console.log(err);
}
});
});
}
} else {
console.log(err);
}
});
如果我想在API中添加参数以从DB获取特定数据,我们是否需要在cloudant上创建搜索索引或查询,而调用API则相同:app.get('/api/provider/:id')
。请帮我复习和分享。感谢
答案 0 :(得分:1)
您可以使用Cloudant的搜索功能。
...
var query = {q: "id:doc.id"};
db.search('design document name', 'index name', query, function(er, result) {
if (er) {
throw er;
}
console.log(result);
});
答案 1 :(得分:1)
你可以通过id / name获取文件:
"\n"
的引用:
https://github.com/apache/couchdb-nano#document-functions
https://github.com/cloudant/nodejs-cloudant#api-reference