0

I use Sails and Waterline, and i would compare username in url with database elements for find an user.

http://localhost:1337/johndoe (or id) find John Doe in database.

My controller, for the moment :

user: function (req, res) {

    var user = req.param('user');
    var elt = (/^[0-9]*$/.test(user))?{id: user}:{name: user};

    User.findOne(elt).exec(function (err, user) {
        if (err) res.json({ error: 'DB error' }, 500);
        if (user) {
            res.json(user);
        } else {
        res.json({ error: 'User not found' }, 404);
        }
    });
}

An idea, please ?

1 Answers1

0

Put you elt in a where function as follows:

user: function (req, res) {

    var user = req.param('user');
    var elt = (/^[0-9]*$/.test(user))?{id: user}:{name: user};

    User.findOne().where(elt).exec(function (err, user) {
        if (err) res.json({ error: 'DB error' }, 500);
        if (user) {
            res.json(user);
        } else {
        res.json({ error: 'User not found' }, 404);
        }
    });
}
Meeker
  • 5,979
  • 2
  • 20
  • 38
  • It's similar to : User.findOne(elt), no ? I replace user taped in url by var userURI = user.toLowerCase().replace(/[^a-zA-Z0-9-_]/g, ''); but in my database, I have "user" and how change this in userURI for comparison? –  Feb 05 '15 at 16:35