技术问询:字符串包含匹配时DB数据获取及JS location字段取值问题
嘿,我来帮你搞定这两个问题:
问题1:当字符串包含另一个字符串时,从数据库获取对应数据
不同数据库的查询语法略有差异,我给你列两个最常用的场景:
MySQL/PostgreSQL等关系型数据库:使用
LIKE操作符配合通配符%(匹配任意长度的字符)。比如要查询title字段包含“前端”的jobs数据,SQL语句可以这么写:SELECT * FROM jobs WHERE title LIKE '%前端%';注意
%的位置:匹配以指定字符串开头的内容用'前缀%',匹配结尾用'%后缀',匹配包含则前后都加%。MongoDB等NoSQL数据库:使用
$regex操作符实现模糊匹配。如果用Mongoose查询,代码大概是这样:const jobs = await Job.find({ title: { $regex: '前端', $options: 'i' } });这里
$options: 'i'表示忽略大小写,不需要的话可以去掉这个参数。
问题2:JavaScript解构嵌套对象字段失败的问题
从你给出的数据库结构来看,address、city、postcode应该是嵌套在location对象里的对吧?你现在的解构是直接从顶层拿这三个字段,当然会出问题——它们根本不在顶层层级!
正确的做法是先提取location对象,再从里面解构出目标字段,修改后的代码如下:
const { title, avatar, company, postDate, jobType, payment, duration, description, location: { address, city, postcode } // 改成嵌套解构 } = this.props.navigation.state.params;
如果location有可能是undefined,为了避免报错,还可以给它加个默认空对象:
const { // 其他字段... location: { address, city, postcode } = {} // 给location设置默认值 } = this.props.navigation.state.params;
内容的提问来源于stack exchange,提问作者Markus Hayner
相关产品推荐
相关产品推荐

