我在使用猫鼬嵌入文档时遇到问题并删除了其中一个。在我的系统中,我有一套记录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