#javascript #mongodb #node.js #mongoose
#javascript #mongodb #node.js #mongoose
Вопрос:
У меня есть 2 схемы, Custphone
и Subdomain
. Custphone
belongs_to
а Subdomain
и Subdomain
has_many
Custphones
.
Проблема заключается в создании отношений с использованием Mongoose. Моя цель — сделать: custphone.subdomain и получить поддомен, к которому принадлежит Custphone.
У меня есть это в моих схемах:
SubdomainSchema = new Schema
name : String
CustphoneSchema = new Schema
phone : String
subdomain : [SubdomainSchema]
Когда я печатаю результат Custphone, я получаю следующее:
{ _id: 4e9bc59b01c642bf4a00002d,
subdomain: [] }
Когда Custphone
результат есть {"$oid": "4e9b532b01c642bf4a000003"}
в MongoDB.
Я хочу custphone.subdomain
создать и получить объект поддомена custphone.
Комментарии:
1. @Mike Robinson — Я хочу создать custphone.subdomain и получить объект поддомена custphone.
Ответ №1:
Похоже, вы хотите попробовать новую функциональность заполнения в Mongoose.
Используя ваш пример выше:
var Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;
SubdomainSchema = new Schema
name : String
CustphoneSchema = new Schema
phone : String
subdomain : { type: ObjectId, ref: 'SubdomainSchema' }
subdomain
Поле будет обновлено с помощью ‘_id’, такого как:
var newSubdomain = new SubdomainSchema({name: 'Example Domain'})
newSubdomain.save()
var newCustphone = new CustphoneSchema({phone: '123-456-7890', subdomain: newSubdomain._id})
newCustphone.save()
Чтобы фактически получить данные из subdomain
поля, вам придется использовать немного более сложный синтаксис запроса:
CustphoneSchema.findOne({}).populate('subdomain').exec(function(err, custPhone) {
// Your callback code where you can access subdomain directly through custPhone.subdomain.name
})
Комментарии:
1. Это все еще актуально для новейшей версии mongoose?
2. Спасибо. Это помогло мне с некоторыми настройками
mongoose#3.8.3
.3. Возможно, это изменилось, но run, похоже, не существует. Мне пришлось использовать .exec!
4. Я использовал это с Mongoose 4.4.12, и это все еще работает. Это работает для меня, а примеры кода в документации Mongoose — нет, хотя я новичок в Mongoose.
Ответ №2:
У меня была похожая проблема, и мне пришлось использовать модель mongoose.findByIdAndUpdate()
документы: http://mongoosejs.com/docs/api.html#model_Model.findByIdAndUpdate
этот пост также помог мне: http://blog.ocliw.com/2012/11/25/mongoose-add-to-an-existing-array/comment-page-1/#comment-17812