arrays - 在当前范围内没有为 struct `schema::users::columns::roles` 找到名为 `contains` 的方法
问题描述
我是 rust 新手,正在尝试创建一个示例 webapi。我正在使用 postgres 并有一个名为“roles”的列作为一种数组。我想使用来自diesel::expression_methods::PgArrayExpressionMethods 的包含方法,但出现错误提示“在当前范围内没有contains
为结构找到名为的方法”schema::users::columns::roles
架构.rs
table! {
users (id) {
id -> Uuid,
username -> Varchar,
email -> Varchar,
password -> Varchar,
first_name -> Nullable<Varchar>,
last_name -> Nullable<Varchar>,
active -> Bool,
roles -> Nullable<Array<Text>>,
created_at -> Timestamp,
updated_at -> Timestamp,
}
}
在处理程序方法中:
users.filter(roles.contains(vec!["admin"])).get_results::<User>(&conn)
解决方案
就在我写这个问题的时候,我发现了问题。它不适用于可为空的数组列。我已经使用默认的空数组重新启动了迁移,现在它可以工作了:)
新架构.rs
table! {
users (id) {
id -> Uuid,
username -> Varchar,
email -> Varchar,
password -> Varchar,
first_name -> Nullable<Varchar>,
last_name -> Nullable<Varchar>,
active -> Bool,
roles -> Array<Text>,
created_at -> Timestamp,
updated_at -> Timestamp,
}
}
新的迁移/.../up.sql
.
.
roles text [] not null default array[]::text[],
.
.
推荐阅读
- java - 在 Eclipse 中自动生成的 java 文件
- html - 当我调整浏览器大小时,为什么文本会出现在框外?
- fastlane - 在 fastlane gym 中为 ios 指定配置文件时,我是否提供配置文件名称或文件路径?
- android - OkHttp 拦截器不断返回 null 并使应用程序崩溃
- javascript - es6 将两个数组与对象合并并累积数据
- python - TypeError:“int”类型的参数不可迭代(使用 lambda)
- java - 每次运行将字母转换为摩尔斯电码仅适用于一个字母
- javascript - 对象值的Javascript数组转换为多维数组
- iis - 在 .NET Core 文件夹中更改和创建文件
- php - 如何使用php在sql中将字符串值9,999.99转换并插入到float/double