簡體   English   中英

如何在貓鼬模式中設置與已定義類型不同的屬性類型?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM