在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
还能这样用,有助于理解方法。