这里使用的是IBM提供的免费版,1G大小,放在远端的云上。它非常适合用于个人学习,测试和轻度开发。
先去官网,右上角注册个账号,百度搜索IBM cloudant,第一个就是,用普通的邮件163,qq都行:
注册好后登录:
创建资源,搜索cloudant:
点进去后就是选择的配置了,能选的不多,地点我选了比较近的东京,实例名自起,plan就选free版:
选完后Create就行,完成后能看到实例:
点击它就进入到这个实例的管理详情页:
点击Launch Dashboard,即可进入到cloudant的网页管理页面(以后会经常进到这个页面):
创建一个库试试,选择不分:
创建一个doc试试,其中可以search by ID:
选择TableView,即可看到上述效果,怎么样,这款云文档库还是不错的,下面来试试使用nodejs连接ta:
1.会到资源列表页,新建凭证:
按照默认的来就行,就指定一下名称,建好后copy下凭证信息:
2. 新建一个nodejs项目,新建一个空目录,命令行进到该目录下,运行 npm init -y,
初始化好后安装@cloudant/cloudant依赖,运行 npm i -S @cloudant/cloudant
运行code .命令用vscode打开该项目,根目录新建一个index.js,一个cre.json文件,将刚才copy的凭证拷贝到里面去
一个config目录,里面创建一个vcap-local.json的文件,复制如下内容:
{
"services": {
"cloudantNoSQLDB": {
"credentials":
PASTE CREDENTIAL INFO HERE
,
"label": "cloudantNoSQLDB"
}
}
}
项目结构:
3. 将cre.json的json替换掉这里的"PASTE CREDENTIAL INFO HERE", 类似这样:
{
"services": {
"cloudantNoSQLDB": {
"credentials": {
"apikey": "Nxxxxxxxxxx",
"host": "xxxxxxxxxxxxx-bluemix.cloudantnosqldb.appdomain.cloud",
"iam_apikey_description": "Auto-generated for key 2xxxxxxxxxxxx",
"iam_apikey_name": "main",
"iam_role_crn": "crn:v1:bluemix:xxxxxxxxxxxxxxxxx",
"iam_serviceid_crn": "crn:v1:bluemix:public:iam-identity::xxxxxxxxxxxxxxxx::serviceid:ServiceId-xxxxxx-xxxxxxx",
"url": "https://xxxxx-xxxx-xxx-xxx-xxxxxxx-bluemix.cloudantnosqldb.appdomain.cloud",
"username": "xxxxx-xxxxxx-xxxxx-bluemix"
},
"label": "cloudantNoSQLDB"
}
}
}
4. index编码如下,如果你也是用的名为main的库:
const Cloudant = require('@cloudant/cloudant');
const vcap = require('./config/vcap-local.json');
function dbCloudantConnect() {
return new Promise((resolve, reject) => {
Cloudant({
url: vcap.services.cloudantNoSQLDB.credentials.url
}, ((err, cloudant) => {
if (err) {
console.error('Connect failure: ' + err.message);
reject(err);
} else {
const db = cloudant.use("main");
console.log('Connect success!');
resolve(db);
}
}));
});
}
dbCloudantConnect();
运行node index.js命令,输出"Connect sucess!"即表示连接成功。
简单byId查询一下刚才的张三记录,需要知道张三的ID:
稍微修改下index.js代码(替换你自己的id):
const Cloudant = require('@cloudant/cloudant');
const vcap = require('./config/vcap-local.json');
function dbCloudantConnect() {
return new Promise((resolve, reject) => {
Cloudant({
url: vcap.services.cloudantNoSQLDB.credentials.url
}, ((err, cloudant) => {
if (err) {
console.error('Connect failure: ' + err.message);
reject(err);
} else {
const db = cloudant.use("main");
db.get('YOUR_ID', (err, result) => {
if (err) {
console.log(`err: ${err}`);
} else {
console.log(JSON.stringify(JSON.stringify(result)));
}
})
resolve(db);
}
}));
});
}
dbCloudantConnect();
结果发现没有读访问权限:
后来没有办法,把资源删除重新创建,改成带legacy的
然后生成的服务凭证也不一样了,带password,可以通过account/password的方式登录,相应替换后,成功拿到了这条数据:
参考&拓展: