2010-08-19 2 views
1

나는 이상한 결함이 있습니다. nodeapi를 사용하고 이야기 노드 유형을 타겟팅하고 있습니다. presave 앞에 insert 사례가 있는데 update 대신 presave이 사용되고 있습니다.nodeapi 인서트 및 프리 세이브

switch ($op){ 
    case 'insert': 
     //do some stuff 
    break; 
    case 'presave': 
     //do some stuff 
    break; 
} 

이상한 것은은 그 이야기 노드가 생성 될 때 presave 블록이 실행됩니다. 나는 insert이 대신에 끼어 들어야한다고 생각하고 break 때문에 종료 할 것이고 presave은 전혀 실행되지 않을 것입니다. 어떤 이유에서 노드 생성시 presave이 실행 중입니다.

답변

4

presave은 노드 저장 프로세스의 일부로, 노드가 데이터베이스에 저장되기 전에 항상 호출됩니다.

그것은 당신이 (기존의 노드가 업데이트 될 때 호출되는 함) (노드가 처음 만들어 질 때 호출되는있는) 또는 updateinsert 동안 데이터베이스에 저장하기 전에 새 $node 객체를 변경하고자 할 때 사용됩니다.

따라서, 노드가 처음 생성 될 때 presave이 호출 된 다음 insert이 호출됩니다.