uni-app 在where中使用正则加dbCmd.eq获取不到数据

uni-app 在where中使用正则加dbCmd.eq获取不到数据

示例代码:

where: {code:dbCmd.and(new RegExp(’^7,1,’),dbCmd.eq(‘7,1,1,’)}


## 操作步骤:

无

## 预期结果:

可以通过确切值及正则获取值

## 实际结果:

获取值

## bug描述:

在where中使用正则加dbCmd.eq获取不到数据
3 回复

不支持这样的写法

更多关于uni-app 在where中使用正则加dbCmd.eq获取不到数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html


好的,感谢

在使用 uni-appuniCloud 数据库查询时,如果你想在 where 条件中使用正则表达式进行查询,通常需要使用 dbCmd.regex 方法。dbCmd.eq 是用于精确匹配的,不支持正则表达式。

以下是一个使用 dbCmd.regex 进行正则表达式查询的示例:

const db = uniCloud.database();
const dbCmd = db.command;

db.collection('your_collection_name')
  .where({
    field_name: dbCmd.regex(RegExp('your_regex_pattern'))
  })
  .get()
  .then(res => {
    console.log(res);
  })
  .catch(err => {
    console.error(err);
  });

解释:

  • db.collection('your_collection_name'):指定你要查询的集合名称。
  • field_name:你要进行正则匹配的字段名。
  • dbCmd.regex(RegExp('your_regex_pattern')):使用 dbCmd.regex 方法进行正则匹配,your_regex_pattern 是你的正则表达式。
  • .get():执行查询并获取结果。

注意事项:

  1. 正则表达式:确保你的正则表达式是正确的,并且符合 JavaScript 的正则表达式语法。
  2. 字段类型:确保你要查询的字段类型是字符串类型,因为正则表达式通常用于字符串匹配。
  3. 性能:正则表达式查询可能会影响查询性能,尤其是在大数据集上使用时,建议谨慎使用。

示例:

假设你有一个 users 集合,其中有一个 username 字段,你想查找所有用户名以 john 开头的用户,可以使用以下代码:

const db = uniCloud.database();
const dbCmd = db.command;

db.collection('users')
  .where({
    username: dbCmd.regex(RegExp('^john'))
  })
  .get()
  .then(res => {
    console.log(res);
  })
  .catch(err => {
    console.error(err);
  });
回到顶部