首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.populate()发布引用

.populate()发布引用
EN

Stack Overflow用户
提问于 2017-09-19 15:41:41
回答 1查看 34关注 0票数 0
代码语言:javascript
复制
var mongoose = require('mongoose')
mongoose.connect('mongodb://127.0.0.1/DocTest');

var patientsSchema = mongoose.Schema({
//This is the value I wanna populate in the rdvs collection.

ssn: String
//But I can't see to have it working.

});


var patients = mongoose.model('patients', patientsSchema);

var Max = new patients({
ssn: "okokok" 
});
Max.save(function (err) {
if (err) {
    console.log(err);
}
else {
    console.log('wink')
}
});

var rdvsSchema = mongoose.Schema({
Heure: {
    type: Date
},
patient: {
    type: mongoose.Schema.Types.ObjectId, ref: 'patients'
}
});

var rdvs = mongoose.model('rdvs', rdvsSchema);

var rdvs1 = new rdvs({
Heure: 14
}
);
rdvs1.save(function (err) {
if (err) {
    console.log(err);
}
else {
    console.log('wonk')
}
});

这就是我想要达到的要求:

代码语言:javascript
复制
rdvs.findOne().populate('patient').exec(function(err, rdvs){
console.log (rdvs.patient.ssn)
});

我在这里挣扎,问题是我想把ssn的价值从病人添加到我的rdvs收藏中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-19 17:04:28

猫鼬操作是异步。在做其他事情之前,您需要等待操作完成。在您的示例中,第二个查询取决于第一个查询的响应--因此您需要嵌套操作。

代码语言:javascript
复制
// setup schemas
var patientSchema = mongoose.Schema({
    ssn: String
});

var rdvSchema = mongoose.Schema({
    Heure: Number, // changed: you're expecting a number
    patient: { type: mongoose.Schema.Types.ObjectId, ref: 'Patient' }
});

var Patient = mongoose.model('Patient', patientSchema);
var Rdv = mongoose.model('Rdv', rdvSchema);

// create a new patient
Patient.create({ ssn: "okokok" }, function (err, patient) {
    if (err) {
        console.log(err);
        return;
    }
    if (!patient) {
        console.log('patient could not be created');
        return;
    }
    // you can only create a RDV once a patient has been created
    Rdv.create({ Heure: 14, patient: patient._id }, function (err, rdv) {
        if (err) {
            console.log(err);
            return;
        }
        if (!rdv) {
            console.log('rdv could not be created');
            return;
        }
        // send response
    });
});

旁白:养成正确命名变量的习惯。通常,模型是单数的,大写的,例如Patient文档是小写的,例如patient

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46304612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档