Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Express Node.JS - Nhận lệnh gọi lại của Redis, thực hiện các lời hứa

Tôi đã tìm ra điều này. Tôi đã sử dụng thư viện Q để thực hiện tất cả các chức năng thay vì client.multi (). Execute (). Điều này cho phép thực hiện sạch sẽ tất cả các lệnh đăng lại và sau đó cho phép tôi truy xuất thông tin.

Trong tệp route.js, tôi chỉ có một đoạn mã ngắn gọn. Mọi thứ được thực thi trong tệp doctorDB.js.

route.js

app.post('/addDoctorInfo', ensureLoggedIn('/login'), function(req, res, next){
        return doctorDB.addDoctor(req.body.id, req.body.doc, req, res, next);
});

doctorDB.js

var addDoctor = function addDoctor(id, doc, req, res, next){
    var fields = Object.keys(doc.fields);

    function middleName(id, doc){
        if (doc.middleName){ return client.hset(id, "middleName", doc.middleName); }
        else { return; }
    }

    return Q.all([Q.ninvoke(client, 'sadd', 'Doctors', id),
                    Q.ninvoke(client, 'hmset', id, "lastName", doc.lastName, "firstName", doc.firstName, "email", doc.email, "university", doc.university, "work", doc.work),
                    Q.ninvoke(client, 'sadd', id + ':fields', fields),
                    middleName(id, doc)]).then(function(x){
                        return getInfo(id, req, res, next);;
                    }, function (err) { res.status(404); });
};

Điều này được chuyển cho hàm getInfo () để gửi phản hồi đến phía máy khách:

var redisHGetAll = Q.nbind(client.hgetall, client);

var getInfo = function getInfo(id, req, res, next){
    return redisHGetAll(id).then(function(x){
        return findByMatchingProperties(x);
    }, function (err) { res.status(404); }).then(function(){
        return client.smembers(id + ':fields', function(err, reply){
            data['fields'] = reply;
            res.setHeader('Content-Type', 'application/json');
            res.end(JSON.stringify(data));
        });
    }, function (err) { res.status(404); })
};

function findByMatchingProperties(x) {
    for (var y in x){
        checkData(y, x[y]);
    }       

    function checkData(y, z){
        for (var d in data){
            if (d === y){
                data[d] = z;
            }
        }
    }
}

var data = {
    lastName: null,
    firstName: null,
    middleName: null,
    email: null,
    university: null,
    work: null,
    fields: null
};



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. tắt máy chủ redis từ dòng lệnh

  2. Redis sentinel docker image / Dockerfile

  3. Redis sentinel vs clustering

  4. Xử lý lỗi Spring Redis

  5. Có thể tạo nhiều kho lưu trữ bộ nhớ cache bằng cách sử dụng trừu tượng bộ nhớ cache của Spring với redis không?