我是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, });
}
});
});
答案 0 :(得分:1)
您在方法的搜索功能中使用的hgetall
方法通过键查找哈希值,在这种情况下是用户ID,并返回Redis中哈希的所有字段。< / p>
没有搜索哈希字段的功能。如果您需要能够从名字映射到用户,则需要使用数据结构(例如集合)手动构建辅助索引,这样您就可以从名字转到具有该名字的用户。