2017-12-14 25 views
0

동일한 ID를 사용하여 두 개의 서로 다른 컬렉션에서 문서를 동시에 제거하려고합니다. 어떤 가능성이 있습니까?깃털 응용 프로그램에서 mongodb에서 동시에 동일한 ID를 사용하여 두 개의 다른 컬렉션에있는 문서를 제거하는 방법

사용자 모음 :

{ 
    "_id" : ObjectId("5a310315f685dd5038fecaaa"), 
    "userId" : 3, 
    "accountId" : 1, 
    "userType" : "DRIVER", 
    "firstName" : "Karthi", 
    "lastName" : "keyan", 
    "email" : "[email protected]", 
    "password" : "$2a$12$KFYc6riMnqTuzXhR0ssKZQmejAU4RF8FthAIQD4sgOUcALesp7DaJxK", 
    "phone" : "xyz", 
    "updatedAt" : ISODate("2017-12-13T10:38:13.492Z"), 
    "createdAt" : ISODate("2017-12-13T10:38:13.492Z"), 
    "__v" : 0 
} 

노동자 모음 :

{ 
    "_id" : ObjectId("5a310315f685dd5038fecaab"), 
    "workerId" : 1, 
    "accountId" : 1, 
    "name" : "Karthikeyan", 
    "email" : "[email protected]", 
    "mobile" : "xyz", 
    "type" : "DRIVER", 
    "joinDate" : ISODate("2017-12-13T10:38:13.070Z"), 
    "assignedVehicleId" : "23423231", 
    "licenseNumber" : "TN2506", 
    "createdBy" : "1", 
    "createdDate" : ISODate("2017-12-13T10:38:13.070Z"), 
    "updatedBy" : "1", 
    "updatedDate" : ISODate("2017-12-13T10:38:13.070Z"), 
    "regularHours" : 3600, 
    "regularRates" : 1500, 
    "overtimeRates" : 400, 
    "distanceRate" : 1000, 
    "stopRate" : 50, 
    "workerStatus" : "AVAILABLE", 
    "userId" : 3, 
    "__v" : 0 
} 

지금 내가 사용자 ID 사용하여 동시에 두 문서를 제거합니다.

답변

0

데이터베이스 어댑터는 removenull으로 호출하고 해당 쿼리와 일치하는 모든 항목을 제거하는 쿼리를 허용합니다 (the documentation 참조). 귀하의 경우 :

app.service('users').hooks({ 
    after: { 
    async remove(context) { 
     const user = context.result; 

     await context.app.service('workers').remove(null, { 
     query: { userId: user.userId } 
     }); 
    } 
    } 
}); 
: 관련 항목을 제거

app.service('users').remove(null, { query: { userId: 3 } }); 
app.service('workers').remove(null, { query: { userId: 3 } }); 

(예를 들어, 사용자가 제거되면 해당 사용자에 대한 모든 노동자를 제거)를 afterhook 수행 할 수 있습니다