Merge branch 'release/2.12.1' into production

This commit is contained in:
Raymond Feng 2015-02-03 11:14:41 -08:00
commit c899536002
3 changed files with 28 additions and 29 deletions

View File

@ -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 2015-02-03, Version 2.12.0
========================== ==========================
@ -1372,14 +1378,6 @@
* 2.0.0-beta1 (Ritchie Martori) * 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š) * Make app.datasources unique per app instance (Miroslav Bajtoš)
* Add RC version (Ritchie Martori) * Add RC version (Ritchie Martori)
@ -1445,11 +1443,6 @@
* Add Change model (Ritchie Martori) * Add Change model (Ritchie Martori)
2014-05-27, Version 1.8.4
=========================
2014-05-27, Version 1.8.5 2014-05-27, Version 1.8.5
========================= =========================
@ -1461,8 +1454,14 @@
* updated package.json with keywords and updated description (Raymond Feng) * updated package.json with keywords and updated description (Raymond Feng)
2014-05-27, Version 1.8.4
=========================
* Add more keywords (Raymond Feng) * Add more keywords (Raymond Feng)
* Bump version (Raymond Feng)
* app: flatten model config (Miroslav Bajtoš) * app: flatten model config (Miroslav Bajtoš)
* Fix the test for mocha 1.19.0 (Raymond Feng) * Fix the test for mocha 1.19.0 (Raymond Feng)

View File

@ -431,6 +431,17 @@ Model.belongsToRemoting = function(relationName, relation, define) {
}, fn); }, 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) { Model.hasOneRemoting = function(relationName, relation, define) {
var pathName = (relation.options.http && relation.options.http.path) || relationName; var pathName = (relation.options.http && relation.options.http.path) || relationName;
var toModelName = relation.modelTo.modelName; var toModelName = relation.modelTo.modelName;
@ -441,7 +452,8 @@ Model.hasOneRemoting = function(relationName, relation, define) {
accepts: {arg: 'refresh', type: 'boolean', http: {source: 'query'}}, accepts: {arg: 'refresh', type: 'boolean', http: {source: 'query'}},
description: 'Fetches hasOne relation ' + relationName, description: 'Fetches hasOne relation ' + relationName,
accessType: 'READ', 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, { define('__create__' + relationName, {
@ -468,24 +480,12 @@ Model.hasOneRemoting = function(relationName, relation, define) {
description: 'Deletes ' + relationName + ' of this model.', description: 'Deletes ' + relationName + ' of this model.',
accessType: 'WRITE' accessType: 'WRITE'
}); });
}; };
Model.hasManyRemoting = function(relationName, relation, define) { Model.hasManyRemoting = function(relationName, relation, define) {
var pathName = (relation.options.http && relation.options.http.path) || relationName; var pathName = (relation.options.http && relation.options.http.path) || relationName;
var toModelName = relation.modelTo.modelName; 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]; var findByIdFunc = this.prototype['__findById__' + relationName];
define('__findById__' + relationName, { define('__findById__' + relationName, {
isStatic: false, isStatic: false,
@ -496,7 +496,7 @@ Model.hasManyRemoting = function(relationName, relation, define) {
description: 'Find a related item by id for ' + relationName, description: 'Find a related item by id for ' + relationName,
accessType: 'READ', accessType: 'READ',
returns: {arg: 'result', type: toModelName, root: true}, returns: {arg: 'result', type: toModelName, root: true},
rest: {after: convertNullToNotFoundError} rest: {after: convertNullToNotFoundError.bind(null, toModelName)}
}, findByIdFunc); }, findByIdFunc);
var destroyByIdFunc = this.prototype['__destroyById__' + relationName]; var destroyByIdFunc = this.prototype['__destroyById__' + relationName];

View File

@ -1,6 +1,6 @@
{ {
"name": "loopback", "name": "loopback",
"version": "2.12.0", "version": "2.12.1",
"description": "LoopBack: Open Source Framework for Node.js", "description": "LoopBack: Open Source Framework for Node.js",
"homepage": "http://loopback.io", "homepage": "http://loopback.io",
"keywords": [ "keywords": [
@ -102,6 +102,6 @@
"url": "https://github.com/strongloop/loopback/blob/master/LICENSE" "url": "https://github.com/strongloop/loopback/blob/master/LICENSE"
}, },
"optionalDependencies": { "optionalDependencies": {
"sl-blip": "http://blip.strongloop.com/loopback@2.12.0" "sl-blip": "http://blip.strongloop.com/loopback@2.12.1"
} }
} }