[英]How do you set a schema property to be of type SubDocument in Mongoose?
[英]How do I set a different type of property in mongoose schema from the defined type?
我在論壇上為用戶個人資料設置了Mongoose模式。 我想做的是將用戶的論壇標題設置為ObjectID
並引用Title模式。 我已經設置了這部分。 但是,默認情況下,我希望此字段是一個名為“ Noob”的字符串,直到從用戶的配置文件中設置了標題為止,然后該值會將其更改為引用數據庫中標題的ObjectID
。
title: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Title',
default: 'Noob'
},
這就是我所擁有的,並且基本上是我想要實現的,但是這會引發錯誤,因為我設置的默認值是字符串而不是ObjectID
。 我不確定如何實現這一目標或我可能有什么選擇。
由於您已經指出出於性能原因要保留強類型ObjectId
,因此必須使用與默認類型相同的類型。 例如,您可以使用全0的ID:
title: {
type: mongoose.Schema.Types.ObjectId,
ref: "Title",
default: 00000000-0000-0000-0000-000000000000
}
然后,您可以檢查此內容並在以后顯示“ Noob”嗎?
您可以將其設置為字符串:
title: {
type: String,
ref: 'Title',
default: 'Noob'
},
以后您仍然可以將其設置為看起來像ObjectID
字符串。
您不能同時使用這兩種方法:如果您想讓字段成為ObjectID
類型,則它需要保留ObjectID
。 如果您希望能夠在其中保存字符串,則它必須為String
類型。
如果title
是另一個集合中對ObjectID
的引用,則Mongoose在執行查找時仍會將ObjectID
-ish字符串轉換為ObjectID
:
如果doc.title
是字符串,那么Title.find({ _id: doc.title })
仍將查找ObjectID
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.