Node.js - Создание отношений с Mongoose - PullRequest
57 голосов
/ 18 октября 2011

У меня есть 2 схемы, Custphone и Subdomain.Custphone belongs_to a 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.

Ответы [ 2 ]

122 голосов
/ 19 октября 2011

Звучит так, будто вы хотите попробовать новую функцию заполнить в 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 
})
0 голосов
/ 17 февраля 2014

У меня была похожая проблема, и мне пришлось использовать mongoose's Model.findByIdAndUpdate ()

docs: 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...