我正在开发一个iphone应用程序,我与Group和Contact对象建立了一个简单的多对多关系.一个组可以有多个联系人,联系人可以属于多个组.
我正在尝试使用以下谓词选择特定联系人不属于的所有组.(注意:uid字段是我用来唯一标识联系人实体的字符串字段)
[NSPredicate predicateWithFormat:@"ALL contacts.uid != %@", contactUId]
Run Code Online (Sandbox Code Playgroud)
根据Apple的谓词编程指南,ALL聚合操作是有效的,但是我得到以下异常,表明这是一个不受支持的谓词:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unsupported predicate (null)'
Run Code Online (Sandbox Code Playgroud)
我可以使用类似的谓词来使用此谓词选择联系人已经属于的所有组,因此看起来我已正确定义了所有关系和字段.
[NSPredicate predicateWithFormat:@"ANY contacts.uid == %@", contactUId]
Run Code Online (Sandbox Code Playgroud)
在构造谓词时抛出异常,而不是在我尝试实际执行获取请求时抛出异常,因此它似乎与我使用的语法相关,而不是与Core Data支持相关.我究竟做错了什么?
问题是,如果函数中抛出异常async,但在没有 的情况下调用该函数await,则 Nest 应用程序将进入不再响应请求但进程不存在的状态。
有时我们可能想在请求中调用一个函数,但不需要等待它完成后再返回对调用者的响应,但大多数时候我们遇到这种情况只是意外遗漏了await. 事实上,它使服务器变得无用,这是一个很大的问题。
我怀疑这个问题可能有一个简单的解决方案,但我自己没有成功找到它。
应用程序控制器.ts
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
@Get('/crash')
public async crash(): Promise<void> {
await this.appService.crash();
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序服务.ts
import { Injectable } from '@nestjs/common';
const sleep = async (ms: number): Promise<void> => {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
};
const …Run Code Online (Sandbox Code Playgroud)