Darboux transformation and variable separation approach: the Nizhnik-Novikov-Veselov equation