From 4bf5970f9cb42d08fbcc0226856200a0d2839807 Mon Sep 17 00:00:00 2001 From: Raymond Feng Date: Tue, 3 Feb 2015 11:13:15 -0800 Subject: [PATCH 1/2] Map not found to 404 for hasOne --- lib/model.js | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/lib/model.js b/lib/model.js index 6438585f..a6ed0b15 100644 --- a/lib/model.js +++ b/lib/model.js @@ -431,6 +431,17 @@ Model.belongsToRemoting = function(relationName, relation, define) { }, fn); }; +function convertNullToNotFoundError(toModelName, ctx, cb) { + if (ctx.result !== null) return cb(); + + var fk = ctx.getArgByName('fk'); + var msg = 'Unknown "' + toModelName + '" id "' + fk + '".'; + var error = new Error(msg); + error.statusCode = error.status = 404; + error.code = 'MODEL_NOT_FOUND'; + cb(error); +} + Model.hasOneRemoting = function(relationName, relation, define) { var pathName = (relation.options.http && relation.options.http.path) || relationName; var toModelName = relation.modelTo.modelName; @@ -441,7 +452,8 @@ Model.hasOneRemoting = function(relationName, relation, define) { accepts: {arg: 'refresh', type: 'boolean', http: {source: 'query'}}, description: 'Fetches hasOne relation ' + relationName, accessType: 'READ', - returns: {arg: relationName, type: relation.modelTo.modelName, root: true} + returns: {arg: relationName, type: relation.modelTo.modelName, root: true}, + rest: {after: convertNullToNotFoundError.bind(null, toModelName)} }); define('__create__' + relationName, { @@ -468,24 +480,12 @@ Model.hasOneRemoting = function(relationName, relation, define) { description: 'Deletes ' + relationName + ' of this model.', accessType: 'WRITE' }); - }; Model.hasManyRemoting = function(relationName, relation, define) { var pathName = (relation.options.http && relation.options.http.path) || relationName; var toModelName = relation.modelTo.modelName; - function convertNullToNotFoundError(ctx, cb) { - if (ctx.result !== null) return cb(); - - var fk = ctx.getArgByName('fk'); - var msg = 'Unknown "' + toModelName + '" id "' + fk + '".'; - var error = new Error(msg); - error.statusCode = error.status = 404; - error.code = 'MODEL_NOT_FOUND'; - cb(error); - } - var findByIdFunc = this.prototype['__findById__' + relationName]; define('__findById__' + relationName, { isStatic: false, @@ -496,7 +496,7 @@ Model.hasManyRemoting = function(relationName, relation, define) { description: 'Find a related item by id for ' + relationName, accessType: 'READ', returns: {arg: 'result', type: toModelName, root: true}, - rest: {after: convertNullToNotFoundError} + rest: {after: convertNullToNotFoundError.bind(null, toModelName)} }, findByIdFunc); var destroyByIdFunc = this.prototype['__destroyById__' + relationName]; From 8e8b62093036cf0a0cc0cca56f6c0e0d49144d8d Mon Sep 17 00:00:00 2001 From: Raymond Feng Date: Tue, 3 Feb 2015 11:14:39 -0800 Subject: [PATCH 2/2] v2.12.1 --- CHANGES.md | 25 ++++++++++++------------- package.json | 4 ++-- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index d12e1268..860ae129 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,9 @@ +2015-02-03, Version 2.12.1 +========================== + + * Map not found to 404 for hasOne (Raymond Feng) + + 2015-02-03, Version 2.12.0 ========================== @@ -1372,14 +1378,6 @@ * 2.0.0-beta1 (Ritchie Martori) - * Bump version (Raymond Feng) - - * Add postgresql to the keywords (Raymond Feng) - - * updated package.json with SOAP and framework keywords (altsang) - - * updated package.json with keywords and updated description (Raymond Feng) - * Make app.datasources unique per app instance (Miroslav Bajtoš) * Add RC version (Ritchie Martori) @@ -1445,11 +1443,6 @@ * Add Change model (Ritchie Martori) -2014-05-27, Version 1.8.4 -========================= - - - 2014-05-27, Version 1.8.5 ========================= @@ -1461,8 +1454,14 @@ * updated package.json with keywords and updated description (Raymond Feng) + +2014-05-27, Version 1.8.4 +========================= + * Add more keywords (Raymond Feng) + * Bump version (Raymond Feng) + * app: flatten model config (Miroslav Bajtoš) * Fix the test for mocha 1.19.0 (Raymond Feng) diff --git a/package.json b/package.json index ceb517e2..f084ba61 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "loopback", - "version": "2.12.0", + "version": "2.12.1", "description": "LoopBack: Open Source Framework for Node.js", "homepage": "http://loopback.io", "keywords": [ @@ -102,6 +102,6 @@ "url": "https://github.com/strongloop/loopback/blob/master/LICENSE" }, "optionalDependencies": { - "sl-blip": "http://blip.strongloop.com/loopback@2.12.0" + "sl-blip": "http://blip.strongloop.com/loopback@2.12.1" } }