如何通过Mongoose(MEAN)中的模式删除已嵌入的文档

时间:2015-06-03 15:56:38

标签: node.js mongodb mongoose mean.io

我在使用猫鼬嵌入文档时遇到问题并删除了其中一个。在我的系统中,我有一套记录mac地址的arduino。除了MAC地址,每个arduino都可以有一组传感器和一组执行器。这些传感器和执行器在单独的文档中定义。以下是该计划:

Arduino的

var arduinoSchema = new mongoose.Schema({
Arduino_id : {type:String, required:true},
Sensors : [Sensor],
Actuators : [Actuator]
}, {versionKey: false});

传感器

var sensorSchema = new mongoose.Schema({
    Type : {type:String, required:true}
}, {versionKey: false});

致动器

var actuatorSchema = new mongoose.Schema({
Type : String
}, {versionKey: false});

现在的问题是我希望系统能够单独移除传感器。所以我希望它能够从执行器型号中移除一个执行器。这应该从我首先发布的arduino中删除带有该ID的执行器。我使用以下代码创建执行器和Arduino:

var ard = new Arduino();

ard.Arduino_id = req.body.Arduino_id;

if(req.body.Actuators !== undefined){
    for(var i = 0; i < req.body.Actuators.length; i++){
        var actuator = new Actuator();
        actuator.Type = req.body.Actuators[i].Type;
        actuator.save(function(err){
            if(err){
                console.log("Database failure - Couldn't add actuator!");
            }
        });
        ard.Actuators.push(actuator);
    }}

if(req.body.Sensors !== undefined){
    for(i = 0; i < req.body.Sensors.length; i++){
        var sensor = new Sensor();
        sensor.Type = req.body.Sensors[i].Type;
        sensor.save(function(err){
            if(err){
                console.log("Database failure - Couldn't add sensor!");
            }
        });
        ard.Sensors.push(sensor);
    }
}

ard.save(function (err) {
    if (err) {
        res.send(err);
    } else {
        res.json(ard);
    }
});

最后,我一直在努力。如果我尝试使用我在下面的代码将其从集合中移除,则实际上已从集合中移除了执行器。但它并没有从arduino本身中删除!

Sensor.remove({_id : req.params.id}, function(err) {
  if(err){
    res.sendStatus(500);
  }
});

我希望你能帮助我!

亲切的问候, Danny Verpoort

0 个答案:

没有答案