根据更新的字段调用函数

我想调用不同的function取决于更新的模型领域。 我的代码如下所示:

update(req, res){ return LED .findById(req.params.LEDId) .then(LED => { if (!LED) { return res.status(400).send({ message: 'LED Not Found', }); } return LED .update(req.body, {fields: Object.keys(req.body)}) .then(() => res.status(200).send(LED)) .catch((error) => res.status(400).send(error)); }) .catch((error) => res.status(400).send(error)); }, 

所以我的计划是集成一些if-clause来获取更改的值,并根据更改调用一些函数。

如果从句:

 if(req.body.status || LED.status){ BLE.changeStatus(req.body.device_ID,req.body.status); }else if(req.body.prog || LED.prog){ BLE.changeProg(req.body.device_ID,req.body.prog); }else if(req.body.white || LED.white){ BLE.changeWhite(req.body.device_ID,req.body.white); }else if(req.body.color || LED.color){ BLE.changeColor(req.body.device_ID,req.body.color); }else if(req.body.brightness || LED.brightness){ BLE.changeBrightness(req.body.device_ID,req.body.brightness); } 

我需要在哪里集成这些可以调用函数的if语句? 我试图将它集成到一个.then(),然后将字段更新发送到数据库,但在尝试启动服务器时出现以下错误:

 SyntaxError: Unexpected token if at createScript (vm.js:53:10) at Object.runInThisContext (vm.js:95:10) at Module._compile (module.js:543:28) at Object.Module._extensions..js (module.js:580:10) at Module.load (module.js:488:32) at tryModuleLoad (module.js:447:12) at Function.Module._load (module.js:439:3) at Module.require (module.js:498:17) at require (internal/module.js:20:19) at Object.<anonymous> (/home/pi/projekt/server/controllers/index.js:1:75) [nodemon] app crashed - waiting for file changes before starting... 

编辑

我现在有点进一步..我已经写了更新function,如:

 update(req, res){ return LED .findById(req.params.LEDId) .then(LED => { if (!LED) { return res.status(404).send({ message: 'LED Not Found', }); } if(req.body.status){ changeStatus(req.params.LEDId,req.body.status); console.log('STATUS CHANGED'); } if(req.body.prog){ changeProg(req.params.LEDId,req.body.prog); console.log('PROG CHANGED'); } if(req.body.white){ changeWhite(req.params.LEDId,req.body.white); console.log('WHITE CHANGED'); } if(req.body.color){ changeColor(req.params.LEDId,req.body.color); console.log('COLOR CHANGED'); } if(req.body.brightness){ console.log('BEFORE BRIGHNTESS CHANGED') changeBrightness(req.params.LEDId,req.body.brightness) console.log('BRIGHNTESS CHANGED') } return LED .update(req.body, {fields: Object.keys(req.body)}) .then(() => res.status(200).send(LED)) .catch((error) => res.status(400).send(error)); }) .catch((error) => res.status(400).send(error)); }, 

我testing了它,并跳转到changeBrightness函数。 在那里,我想与贵族合作。 代码如下所示:

 changeBrightness(LEDId,updateBrightness){ console.log('BEGINN CHANGEBRIGHTNESS FUNCTION') var uuid = "4711"; var brightness = updateBrightness; console.log('BRIGHTNESS', brightness) console.log('UUID', uuid) console.log('AFTER CHANGEBRIGHTNESS VAR') // Connect to client, find Service, find Characteristic and write status noble.connect(uuid, function(error){ noble.discoverServices([lightningServiceUuid], function(error, service){ var tempLightningService = service[0]; writeFile("SUCCESS -- Discovered Service on UUID"); tempLightningService.discoverCharacteristics([brightnessCharacteristic], function(error, characteristics){ var tempBrightnessCharacteristic = characteristics[0]; writeFile("SUCCESS -- Discovered Characterisitc on UUID"); console.log('IN THE MIDDLE OF CHANGEBRIGHTNESS FUNCTION') tempBrightnessCharacteristic.write(new Buffer(brightness), true, function(error){ writeFile("SUCCESS -- Wrote brightness characteristic"); }); }); }); }); //Disconnect from client noble.disconnect(function(error){ writeFile("SUCCESS -- Disconnected from Client"); }); console.log('END CHANGEBRIGHTNESS FUNCTION') } 

我目前正在使用一个假的uuid进行testing。所以当我启动服务器并执行更新请求时,我的输出如下所示:

 [nodemon] restarting due to changes... [nodemon] starting `node ./bin/www` Executing (default): SELECT "id", "device_id", "name", "group", "status", "device_type", "prog", "white", "color", "brightness", "createdAt", "updatedAt" FROM "LEDs" AS "LED" WHERE "LED"."id" = '1'; BEFORE BRIGHNTESS CHANGED BEGINN CHANGEBRIGHTNESS FUNCTION BRIGHTNESS 5 UUID 4711 AFTER CHANGEBRIGHTNESS VAR PUT /api/led/1 400 357.728 ms - 2 

为什么在高贵的function之前停下来呢? 我需要改变什么?