我有2个模式CustphoneSubdomainCustphone belongs_to SubdomainSubdomain has_many Custphones

问题在于使用 Mongoose 创建关系。我的目标是这样做:custphone.subdomain并获取Custphone所属的子域。

我的模式中有这个:

SubdomainSchema = new Schema
    name : String

CustphoneSchema = new Schema
    phone : String
    subdomain  : [SubdomainSchema]

当我打印保管电话结果时,得到以下信息:
{ _id: 4e9bc59b01c642bf4a00002d,
  subdomain: [] }

Custphone结果在MongoDB中具有{"$oid": "4e9b532b01c642bf4a000003"}时。

我想执行custphone.subdomain并获取客户电话的子域对象。

最佳答案

听起来您正在尝试尝试Mongoose中的新populate功能。

使用上面的示例:

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
})

关于javascript - Node.js-与 Mongoose 创建关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7810892/

10-11 03:09