mongoose.Types.ObjectId.isValid异样用法

Feb 21, 2022

Schema定义了某字段为populate (填充)代码如下:

……
'category': { type: Schema.Types.ObjectId, ref: 'Categorys' }
……

然后在后续的业务需求里要判断它是否有内容,无意下竟然发现了如下这个方法:

mongoose.Types.ObjectId.isValid(category)

原本是想用它来判断“有”的,因为在写入的时候它只能接受 ID,所以用来判断它是不是 ObjectId 也理所当然。结果当然并非如此……

相反,它竟然是判断“空”。后来想想也理解,因为当这个 category 没“值”时,在写入的那条“数据”里,这个字段本身就不存在,所以判断它只能由定义它的Schema里来决定。

当然,判断是否有值有更直接的办法,那就是:

if(category) {console.log('有值')}

偶尔发现 mongoose.Types.ObjectId.isValid 还能这样用,有助于理解方法。