Redis中对象内的搜索值如何?

时间:2017-05-28 08:00:13

标签: node.js redis

我是Redis和Nodejs的新手,我看过this教程,我正在尝试按名称搜索用户,

这是我传递id时从redis返回的对象:

  {
    first_name: '‪john',
    last_name: 'doe',
    email: 'john@gmail.com',
    phone: '543313305',
    id: 'user001' 
   } 

以下是搜索功能:

app.post('/user/search',function (req,res,next) {
let id = req.body.id;

client.hgetall(id ,function(err,obj){
    if(!obj){
        res.render('searchusers',{
            error:"user doesn't exist",

        });

    } else {
        obj.id = id
        console.log(obj);
        res.render('details',{
            user:obj, });
    }
   });
});

我尝试用id替换搜索,通过first_name搜索:

首先我将字段名称更改为“first_name”而不是“id”

<h1>Search Users</h1>
{{#if error}} <span>{{error}}</span>{{/if}}
 <form class="form-inline" method="POST" action="/user/search">
<div class="form-group">
    <input type="text" name="first_name" placeholder="Search" class="form-
  control">
</div>
<input type="submit" class="btn btn-primary" value="Search">

而且我已经在app.js中更改了它;

app.post('/user/search',function (req,res,next) {
let first_name = req.body.first_name;

client.hgetall(first_name ,function(err,obj){
    if(!obj){
        res.render('searchusers',{
            error:"user doesn't exist",

        });

    } else {
        obj.first_name = first_name
        console.log(obj);
        res.render('details',{
            user:obj, });
    }
   });
});

1 个答案:

答案 0 :(得分:1)

您在方法的搜索功能中使用的hgetall方法通过键查找哈希值,在这种情况下是用户ID,并返回Redis中哈希的所有字段。< / p>

没有搜索哈希字段的功能。如果您需要能够从名字映射到用户,则需要使用数据结构(例如集合)手动构建辅助索引,这样您就可以从名字转到具有该名字的用户。