아래 코드는 문서를 삭제하고 콜백의 두 번째 인수로 반환합니다. 이게 사실인가요? 인터넷에서 상충되는 정보가 많이 있습니다. 비슷한 접근 방식을 사용 했었지만 더 나은 접근 방식이 있다면 적응할 의향이 있습니다. 문서를 삭제하고 두 필드 (_id
및 conversation
)에 액세스해야합니다. 고마워, 나는 끊고 듣겠다. 더 구현 고유의 API에 의해 사용을 위해을 명확히하기 위해findOne() 및 remove()에 대한 혼동
deleteMessage: function(userId,messageId,callback){
model.Message.findOne({_id: messageId, user: userId}).remove().exec(function(err,removed){
// removed should be the deleted document or some falsey value
if(err || !removed){
return callback('Invalid messageId or user does not have permission to delete this message',null);
}
callback(null,'Message Deleted');//success
//we have access to the removed document, so we can get the conversation id easily and emit to the users.
io.to('convo_'+removed.conversation.toString()).emit('messaging.messageDeleted',{ message: removed._id.toString() });
});
},
이것은 추상적 인 컨트롤러 인터페이스입니다. 기본적으로 우리가 지원하거나 향후 지원할 프로토콜에 대해이 작업을 표준화합니다.
socket.on('messaging.deleteMessage',function(data){ var mid = data.message || false; MessagingAPI.deleteMessage(user.id,mid,function(err,results){ socket.emit('messaging.deleteMessage',{error:err,results: results}); }); });
그래서 예,이 컨트롤러 방법은 전송 업데이트는 방법이 아닌 콜백에 속하지 않는 : 다음은이 방법을 socket.io에서 사용하는 방법의 예입니다. 콜백은 개시 자만위한 것입니다. 아무것도.
이 메소드는 IRC에서 http로, apio.io에 이르기까지 api를 제공하는 모든 다른 프로토콜에서 액세스 할 수 있도록 추상 컨트롤러입니다.이 신비하고 모호한 콜백 매개 변수가있는 이유는 socket.io입니다. 이 경우 제어기가 자체 업데이트를 전송하는 책임이 있습니다. 콜백은 액션의 개시자가 컨트롤러로부터 응답을 받기위한 것입니다. – r3wt