-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathupdate.js
More file actions
20 lines (19 loc) · 827 Bytes
/
update.js
File metadata and controls
20 lines (19 loc) · 827 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const queryString = require("../utils/queryStringGenerator");
const N1qlQuery = require('couchbase').N1qlQuery;
const uuidv1 = require("uuid/v1");
module.exports = (bucket, db, { KEY, WHERE, SET }) => {
return new Promise((resolve, reject) => {
const whereStr = WHERE ? `WHERE ${queryString(WHERE)}` : "";
const keyStr = KEY ? `USE KEYS "${KEY}"` : "";
const setStr = `SET ${queryString(SET)}`;
const statement =
[keyStr, setStr, whereStr, `RETURNING ${bucket}.*`].reduce((acc, str) => {
return acc += ` ${str || ""}`;
}, `UPDATE ${bucket}`);
const query = N1qlQuery.fromString(statement);
db.query(query, (error, result) => {
if (error) return reject(error);
return resolve(result[0]);
});
});
};