1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

aikoの曲名を2つ並べると、さらに味わい深いタイトルになるのではないか?(IBM CloudのCloudantにデータを保存して読み出す)

Posted at

発端

aikoさんの曲名は、カブトムシとかアンドロメダとか目を惹くタイトルが多いので、2つ並べたらより魅力的になるのではないか?

Cloudant

IBM Cloudが提供するNoSQLデータベースで、CouchDBなどと互換性がある。
無料のLiteプランで1GBまで保存できるので、テキストデータなどを保存する用途だと持て余すくらい多い。
30日何もしなければ消えるようです。

スクリーンショット 2019-02-24 18.39.16.png

IBM CloudのダッシュボードからCloudantのサービスを作成し、Cloudantのページに行く。
そしてDBを作成。
今回は、歌手aikoの曲名を保存することにしたので、aiko_songsというDBを作った。

スクリーンショット 2019-02-24 18.50.14.png

サンプルデータ

こちらのような曲名を列挙したcsvを用意する。

csvファイルにはヘッダは無い

番号 曲名
1 あした
2 ナキ・ムシ
3 花火

プログラム

今回はRubyで書いた

aiko.rb
# cloudantの設定
cloudant_url =  "cloudant_address"
uri = URI.parse(cloudant_url)
https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = true

coudant_url には、cloudantのURLを指定する。
https://xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-bluemix.cloudant.com/aiko_songs/
こういう形式で、末尾にDB名を追加する。

aiko.rb
req = Net::HTTP::Post.new(uri.request_uri)
req['Content-Type'] = "application/json"

# CSVの1行ごとに登録
csv_data.each do |data|
  payload = {
    "_id" => data[0],
    "song_name" =>  data[1]
  }.to_json
  req.body = payload
  res = https.request(req)

jsonを作って、postすれば登録できる。

ただ、先にCloudant側でPermissionを設定しないといけない。
上記URLはUUIDということもあり、流石に推測できないので、テスト用途ならすべてONにしても大きな問題にはならないと思う。
(テスト終了後にちゃんとOFFにすること)

スクリーンショット 2019-02-24 19.14.04.png

rubyファイルを実行すれば、Cloudantに登録される。

スクリーンショット 2019-02-24 19.17.12.png

これを、同じくIBM Cloud上のNode-REDから呼び出したものがこちら

JavaScriptから呼び出すときは、jQueryを使うなら以下のような感じで、セレクタを書いて取得する。
以下の例では、単にランダムに取得しているだけ。

$.post("/getAikoSong", 
  { "selector":  
    {"_id": 
      {"$eq": randomNum } // 乱数のIDの曲名を取ってくる。
    }
  }, function(data) {
    // 取得した曲名を表示
    mesDiv.innerHTML = data["docs"][0]["song_name"]
});

動作サンプル

こちら


Feb-24-2019 19-26-13.gif

aikoさんが悪いんじゃなくて、私が悪かったです。
済みません。

リポジトリ

github

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?