Ich möchte die Zeile des untergeordneten Schemas basierend auf einem bestimmten Feld entfernen und das Schema befindet sich innerhalb des Arrays des übergeordneten Schemas. Ich habe es mit dem folgenden Code versucht, aber es ist fehlgeschlagen. Kann jemand diese // Codedetails auflösen. use_list ist ein übergeordnetes Schema, in dem sein Array-Feld mit dem Namen frr_list ein Array-Element als Schemas enthält. und ich möchte einzelne Zeilen dieses untergeordneten Schemas basierend auf fren_id entfernen. // //
//main parent schema
var user_list = new Schema({
user_id: {
type: mongoose.Schema.Types.ObjectId,
ref: 'user_reg'
},
fren_list: [fren_list],
block_list: [fren_block_list],
frr_list: [fern_req_recieved_list], //asking about this array
frs_list: [fern_req_sent_list],
});
//child schema
var fern_req_recieved_list = new Schema({ //fren req list
fren_id: {
type: mongoose.Schema.Types.ObjectId,
ref: 'user_reg'
},
fren_name: String,
dt: {
type: Date,
default: Date.now
},
status: {
type: String,
default: "pending"
} //pending, rejected,accepted
});
User.list.findOne({ //parent document
user_id: currentUserId
}, function(err, user) {
///below is child inside the array field and is schema
user.frr_list.findOneAndRemove({
fren_id: requestedUserId
}, function(err, message) {
if (err) {
callback(null, false);
} else {
callback(null, true);
}
})
});
Soweit ich weiß, können Sie die einzelnen Elemente des frr_list-Arrays folgendermaßen löschen:
Ich gehe davon aus, dass Sie die einzelnen Elemente von frr_list durch frr_id löschen (das ist _id, das von Mungo generiert wird).
User.update({ _id: userListId,
user_id:currentUserId
//filter record by userListId and currentUserId
},
{ //now pull the required row from the array based on _id of array
$pull: { frr_list: { _id: frr_id } } },
function(err,result){
if(result.ok==1 && result.nModified==1 && result.n==1)
//successfully deleted
else if(result.ok==1 && result.nModified==0 && result.n==0)
//no record exist
else
//something goes wrong
});
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen