I think, it is happening, because you are calling the funcion done() before
the promise resolution.
In servicesDatabase.js

On 30 May 2017 at 11:44, Catia Matos <[email protected]> wrote:

> Hy everyone, I'm having some troubles with my rest api. I have in my ui a
> button where I click to update the state of a bus ( visible / not visible).
> By clicking on the button I can update the state of the item on the map.
>
> So my problem is when I update the info in my DB in my controller i get
> the result of this as undefined but the resolve of the db returns
>
> {"command":"UPDATE","rowCount":1,"oid":null,"rows":[],"fields":[],"_parsers":[],"RowCtor":null,"rowAsArray":false}
>
> I dont get it...
>
> ServicesController.js
>
> ServicesController.prototype.updateMap = function (req, res, next) {
>
>     var data = req.body;
>     if (isEmptyObject(data)) {
>         res.status(400).send({error: errorMessage.emptyBody});
>         return;
>     }
>
>     if (data.sn === undefined || data.sn === "") {
>         res.status(400).send({error: "Invalid serial number"});
>         return;
>     }
>
>     Database.Services.getDeviceBySn(data.sn).then(function (device) {
>         var map_data={
>             "isRoot": data.root,
>             "visible": data.visible
>         }
>
>         Database.Services.addMapInfo(map_data, device.id).then(function (map) 
> {
>             console.log("updateMap depois do addMapInfo   ---   map >>> ", 
> map);
>             if (map) {
>                 res.status(200).send(map);
>             } else {
>                 res.status(404).end();
>             }
>         }).catch(function (e) {
>             res.status(500).send(e);
>         });
>
>     }).catch(function (e) {
>         res.status(500).send(e);
>     });}
>
> ServicesDatabase.js
>
> ServicesDatabase.prototype.addMapInfo = function (data, deviceId) {
>     return new Promise(function (resolve, reject) {
>         pg.connect(dbStatsConnectionString, function (err, client, done) {
>             if (err) {
>                 reject(err);
>                 return
>             }
>             client.query("UPDATE device_services SET 
> data=jsonb_set(data::jsonb,'{map}',$1::jsonb,true), modified_date=NOW() WHERE 
> device_id=$2", [data, deviceId], function (err, result) {
>                 done();
>                 if (err) {
>                     reject(err);
>                 } else {
>                     resolve(result.rows[0]);
>                 }
>             });
>         });
>     });}
>
> My parameters are data {"isRoot":"false","visible":"online"} and deviceId
> "1f110136-9490-4ea5-a46d-3fdfa65ea0ab"
>
> My controller always return 404 because of this
>
> if (map) {
>     res.status(200).send(map);} else {
>     res.status(404).end();}
>
> Anyone can help me? I dont get it...
>
> Link to stackoverflow: https://stackoverflow.com/questions/
> 44264889/update-from-bd-with-success-but-returns-undefined-
> on-controller-node-js
>
> --
> Job board: http://jobs.nodejs.org/
> New group rules: https://gist.github.com/othiym23/9886289#file-
> moderation-policy-md
> Old group rules: https://github.com/joyent/node/wiki/Mailing-List-
> Posting-Guidelines
> ---
> You received this message because you are subscribed to the Google Groups
> "nodejs" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/nodejs/ee5ecffb-0bba-46b3-921d-6eaa5da39230%40googlegroups.com
> <https://groups.google.com/d/msgid/nodejs/ee5ecffb-0bba-46b3-921d-6eaa5da39230%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>



-- 
[]'s

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/CAET7tnbB%3DJQ8HCiUxRyhuwP%2B2ykMfR0QecwYyGJiJFGEbNMDpg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to