【发布时间】:2021-06-28 05:40:40
【问题描述】:
我正在使用 mongoDB Atlas 来存储一些数据。 集合就像,
var User = new Schema({
firstname: {
type: String,
default: ''
},
lastname: {
type: String,
default: ''
}
}, {
timestamps: true
});
但是我使用的是Passport进行身份验证,用户名和密码都是由它来处理的。
当按用户名搜索用户时,我想显示具有匹配字符的用户名列表。 比如,自动完成建议。
我意识到我必须以某种方式使用正则表达式来实现这一点,但我不知道如何! 目前,我正在这样做,
router.post('/search', corsWithOptions, (req, res, next) => {
User.findByUsername(req.body.username).then(user => {
console.log(user);
res.json(user)
})
})
但在整个用户名可用之前,此方法返回 null。
这里,findByUsername 是 Passport 中的一个方法,有 2 个参数(用户名,selectHashSaltFields)。
我也试过了,
User.find({
$or: [
{
username: { '$regex': '.*' + req.body.search, $options: 'i' },
firstname: { '$regex': '.*' + req.body.search, $options: 'i' },
lastname: { '$regex': '.*' + req.body.search, $options: 'i' }
}
]
}).then(user => {
console.log(user)
})
这将返回一个空列表,即使值存在
这是一个 MERN 堆栈,如何在前端查询文档并显示自动完成的建议?
【问题讨论】:
标签: node.js database mongodb mongoose mongodb-query