对于下面的代码,我无法访问duplicyCheck.name。
类型脚本给出一个错误,说“属性'name'不存在于类型'never'上”。
const duplicacyCheck: userDoc | null = await user.findOne({
name: name,
userId: id,
});
if (duplicacyCheck) {
console.info(duplicacyCheck.name, "duplicacyCheck");
}
这是我的用户模式
interface userDoc extends mongoose.Document {
name: string,
userId: string,
createdAt: string,
updatedAt: string,
version: number,
createdBy: string,
updatedBy: string
}
name和userId是我的模式中的必填字段。
1条答案
按热度按时间de90aj5v1#
根据 Mongoose 的文件
Model.findOne()return << Query >>,所以
会得到一个承诺< never >
你应该执行它来得到结果。
您可以使用Query.exec()执行查询,如
编辑:
document说道:
虽然查询不是promise,但查询是thenable。这意味着它们有一个.then()函数,因此您可以使用promise链接或async await将查询用作promise
就功能而言,这两者是等同的。但是,我们建议使用.exec(),因为它可以提供更好的堆栈跟踪。
所以建议使用exec()来找出实际问题