如果每个项目的国家/地区未将其标记为无效,则每个国家/地区的名称都必须是唯一的,因此,如果根本没有设置无效或无效,我想设置某种复合索引来强制使用标志设置为false。可以使用索引完成此操作,还是必须编写一个预保存钩子?
let itemSchema = new Schema({
name: String,
country: String,
inactive: Boolean
})
itemSchema.index(
{
name: 1,
country: 1
},
{
// How do I set it to unique if inactive is false or does not exist?
unique: true
}
)
答案 0 :(得分:0)
我有一个非常相似的问题,并在this answer的帮助下解决了。
generatePDF(dynamic value) async {
final filename = value.substring(value.lastIndexOf("/") + 1);
var request = await HttpClient().getUrl(Uri.parse(value));
var response = await request.close();
var bytes = await consolidateHttpClientResponseBytes(response);
String dir = (await getApplicationDocumentsDirectory()).path;
File file = new File('$dir/$filename');
await file.writeAsBytes(bytes);
OpenFile.open(file.path);
}
我还没有使用itemSchema.index(
{
name: 1,
country: 1
},
{
unique: true,
partialFilterExpression: { inactive: { $eq: false } }
}
)
进行尝试,但是大概可以修改$exists
使其包含以下内容:
partialFilterExpression