İç içe geçmiş nesnelere (ör. Bir nesne dizisi) sahip bir belge oluştururken, her nesneye kendi _id verilir. Örneğin, benim şema şöyle görünür: lists.allocations
dizideki her allocation
nesnedir gibi belgeler sonunda oluşturulduğundaMongoose, iç içe tüm nesnelere _id ekliyor
mongoose = require "mongoose"
Schema = mongoose.Schema
schema = new Schema
name:
type: String
required: true
unique: true
trim: true
lists: [
list:
type: Schema.Types.ObjectId
required: true
ref: "List"
allocations: [
allocation:
type: Number
required: true
]
]
createdAt:
type: Date
default: Date.now
updatedAt:
type: Date
# Ensure virtual fields are serialised.
schema.set "toJSON",
virtuals: true
exports = module.exports = mongoose.model "Portfolio", schema
lists
dizideki her nesne bir _ID verilir. Bu belgeye fazla basmış gibi görünüyor ve belgeyi şişiriyor, ancak MongoDB'nin (veya Mongoose'un) bu ek bilgiyi içerecek bir belgeye ihtiyacı var mı? Değilse, sadece _id'in kök belgede kalmasını önlemek istiyorum.
Ayrıca, Mongoose otomatik olarak id
alan kodu beklediğim için gereksinim duyduğum _id
için bir id
sanal oluşturur. İşte bu yüzden JSON ile sanal olarak döndüm. Ancak, yalnızca kökte değil, yalnızca tüm belgede _id
alanları bulunduğundan, bu sanaltüm kopyalarını içerir. Ek _id alanlarını engellemenin bir yolu yoksa, yalnızca sanal dosyayı yalnızca _id kök dosyasına uygulamak için nasıl alabilirim? Ya da onunla yapmaya çalıştığım şeyi yapmanın daha iyi bir yolu varsa, bu ne olurdu? Her iç içe nesne türü için açık şemaları kullanarak ve false
onların _id
ve id
seçenekleri ayarlayarak:
(3,6) Ben sadece _ID eklemek mümkün olduğum için kod ekleme: false alt şemalara ana şemada ayrı alt şemalar yapmanıza gerek kalmadan sağ alt şemalar – cyberwombat
Bir JavaScript çözümü arıyorsanız: http://stackoverflow.com/questions/17254008/stop-mongoose-from-created-ids-for- subdocument-arrays –