当前位置: 首页 > 面试题库 >

Mongoose.js虚拟填充

艾灿
2023-03-14
问题内容

我的项目中有一个圆形模型:

var circleSchema = new Schema({
//circleId: {type: String, unique: true, required: true},
patientID: {type: Schema.Types.ObjectId, ref: "patient"},
circleName: String,
caregivers: [{type: Schema.Types.ObjectId}],
accessLevel: Schema.Types.Mixed
});

circleSchema.virtual('caregiver_details',{
    ref: 'caregiver',
    localField: 'caregivers',
    foreignField: 'userId'
});

照顾者模式:

var cargiverSchema = new Schema({
    userId: {type: Schema.ObjectId, unique: true},  //objectId of user document
    detailId: {type: Schema.ObjectId, ref: "contactDetails"},
    facialId: {type: Schema.ObjectId, ref: "facialLibrary"}, //single image will be enough when using AWS rekognition
    circleId: [{type: Schema.Types.ObjectId, ref: "circle"}],           //multiple circles can be present array of object id
});

样本对象:

{ 
    "_id" : ObjectId("58cf4832a96e0e3d9cec6918"), 
    "patientID" : ObjectId("58fea8ce91f54540c4afa3b4"), 
    "circleName" : "circle1", 
    "caregivers" : [
        ObjectId("58fea81791f54540c4afa3b3"), 
        ObjectId("58fea7ca91f54540c4afa3b2")
    ], 
    "accessLevel" : {
        "location\"" : true, 
        "notes" : false, 
        "vitals" : true
    }
}

我已经尝试过为mongoosejs进行虚拟填充,但是无法使其正常工作。这似乎是完全相同的问题:https
:
//github.com/Automattic/mongoose/issues/4585

circle.find({"patientID": req.user._id}).populate('caregivers').exec(function(err, items){
        if(err){console.log(err); return next(err) }
        res.json(200,items);
    });

我只得到结果中的对象ID。它没有被填充。


问题答案:

找出问题所在。默认情况下,虚拟字段不包含在输出中。在圈子模式中添加以下内容之后:

circleSchema.virtual('caregiver_details',{
    ref: 'caregiver',
    localField: 'caregivers',
    foreignField: 'userId'
});

circleSchema.set('toObject', { virtuals: true });
circleSchema.set('toJSON', { virtuals: true });

现在,它可以完美运行。



 类似资料:
  • 我试图填补我的PyCharm Django项目有一个虚拟环境的requirements.txt。当我的虚拟环境已经启动时,我正在使用以下内容: 这将创建大量条目,如图所示,但没有我添加的包条目,如djangorestframework、Django crispy表单等。 我要怎么做才能列出我所有的包裹?安装在虚拟环境中的包都不会列在requirements.txt 此刻我的requirements

  • 问题内容: 我正在尝试编写一个猫鼬查询,以检索一组资产以及这些资产的最新交易。交易与资产在单独的集合中。 为此,我首先在资产模型中创建了一个虚拟数组,以将资产链接到事务。 然后,我在node.js表达控制器中使用.populate进行查询(请注意,硬编码的“限制:1”有时会变成N): 在我的测试系统中有3个资产,每个资产都有一堆交易,它会为前两个资产返回旧交易,而对于第三个资产则不返回任何交易。

  • 我对虚拟函数感到困惑。有人告诉我,父类中的虚拟意味着我可以在子类中覆盖它。但是,如果我省略父类中的虚拟,我仍然可以覆盖它。

  • 问题内容: 用伪数据填充SQL表的最快方法是什么? 我有一张宽桌子,上面有大约40种不同类型的字段(int,bit,varchar等),需要进行一些性能测试。我正在使用SQL Server 2008。 谢谢! 问题答案: RedGate的SQL数据生成器 一键生成数据 基于列和表名称的真实数据 如果需要,可以自定义数据 消除了数小时的繁琐工作 完全支持SQL Server 2008

  • 虚拟化 [PV_OPS] noreplace-paravirt 禁止使用内核通用的半虚拟化接口paravirt_ops,主要用于解决某些在Virtual PC上安装或运行Linux的故障。 [VMMIO] virtio_mmio.device=size@baseaddr:irq[:id] 实例化virtio-mmio设备(CONFIG_VIRTIO_MMIO)。可以多次使用以实例化多个设备。 si

  • 查看虚拟机相关的监控告警信息。 监控菜单下的虚拟机页面主要用于查看虚拟机相关的监控告警信息。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “监控/资源/虚拟机” 菜单项,进入虚拟机页面。 查看虚拟机列表 该功能用于查看虚拟机的监控告信息。 在虚拟机页面,支持查看以下信息: 名称:虚拟机的名称。 IP:虚拟机的IP地址。 监控状态:虚拟机是否设置告警以及发生告警。 状态:虚拟机的当