javascript TypeScript类型“never”问题,由于此错误,无法访问属性

i1icjdpr  于 2023-09-29  发布在  Java
关注(0)|答案(1)|浏览(141)

对于下面的代码,我无法访问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是我的模式中的必填字段。

de90aj5v

de90aj5v1#

根据 Mongoose 的文件
Model.findOne()return << Query >>,所以

await user.findOne({
                name: name,
                userId: id,
            });

会得到一个承诺< never >
你应该执行它来得到结果。
您可以使用Query.exec()执行查询,如

await user.findOne({
                name: name,
                userId: id,
            }).exec();

编辑:
document说道:
虽然查询不是promise,但查询是thenable。这意味着它们有一个.then()函数,因此您可以使用promise链接或async await将查询用作promise
就功能而言,这两者是等同的。但是,我们建议使用.exec(),因为它可以提供更好的堆栈跟踪。
所以建议使用exec()来找出实际问题

相关问题