-
Notifications
You must be signed in to change notification settings - Fork 13
/
introduction.js
121 lines (108 loc) · 3.59 KB
/
introduction.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
'use strict';
var config = require('../../config');
/*
* Code samples from:
* http://docs.basho.com/riak/latest/dev/taste-of-riak/nodejs/
*/
var assert = require('assert');
var async = require('async');
var logger = require('winston');
var Riak = require('basho-riak-client');
function TasteOfRiakIntroduction(done) {
var client = config.createClient(function (e, c) {
if (e) {
throw new Error(e);
}
client.ping(function (err, rslt) {
if (err) {
throw new Error(err);
} else {
// On success, ping returns true
assert(rslt === true);
logger.info('[TasteOfRiakIntro] ping is successful');
save_people();
}
});
});
function save_people() {
var people = [
{
emailAddress: "bashoman@basho.com",
firstName: "Basho",
lastName: "Man"
},
{
emailAddress: "johndoe@gmail.com",
firstName: "John",
lastName: "Doe"
}
];
var storeFuncs = [];
people.forEach(function (person) {
// Create functions to execute in parallel to store people
storeFuncs.push(function (async_cb) {
client.storeValue({
bucket: 'contributors',
key: person.emailAddress,
value: person
},
function(err, rslt) {
async_cb(err, rslt);
}
);
});
});
async.parallel(storeFuncs, function (err, rslts) {
if (err) {
throw new Error(err);
} else {
logger.info('[TasteOfRiakIntro] people stored in Riak');
read_person();
}
});
}
function read_person() {
client.fetchValue({ bucket: 'contributors', key: 'bashoman@basho.com', convertToJs: true },
function (err, rslt) {
if (err) {
throw new Error(err);
} else {
var riakObj = rslt.values.shift();
var bashoman = riakObj.value;
logger.info("[TasteOfRiakIntro] I found %s in 'contributors'", bashoman.emailAddress);
update_person(riakObj);
}
}
);
}
function update_person(riakObj) {
var bashoman = riakObj.value;
bashoman.firstName = "Riak";
riakObj.setValue(bashoman);
client.storeValue({ value: riakObj, returnBody: true, convertToJs: true }, function (err, rslt) {
if (err) {
throw new Error(err);
} else {
var updated = rslt.values.shift().value;
logger.info("[TasteOfRiakIntro] updated bashoman first name: %s", updated.firstName);
delete_example();
}
});
}
function delete_example() {
client.deleteValue({ bucket: 'contributors', key: 'johndoe@gmail.com' }, function (err, rslt) {
if (err) {
throw new Error(err);
} else {
logger.info('[TasteOfRiakIntro] john doe deleted from Riak');
}
client.stop(function (err) {
if (err) {
logger.error('[TasteOfRiakIntro] err: %s', err);
}
done(err, rslt);
});
});
}
}
module.exports = TasteOfRiakIntroduction;