diff --git a/lib/models/model.js b/lib/models/model.js index bb59b129..fdc48f55 100644 --- a/lib/models/model.js +++ b/lib/models/model.js @@ -201,22 +201,6 @@ Model._getAccessTypeForMethod = function(method) { } } -var superToJSON = Model.prototype.toJSON; -Model.prototype.toJSON = function toJSON() { - var Model = this.constructor; - var obj = superToJSON.apply(this, arguments); - var settings = Model.definition && Model.definition.settings; - var hiddenProperties = settings && settings.hidden; - - if(Array.isArray(hiddenProperties)) { - for(var i = 0; i < hiddenProperties.length; i++) { - delete obj[hiddenProperties[i]]; - } - } - - return obj; -} - // setup the initial model Model.setup(); diff --git a/package.json b/package.json index de2512a2..3822fbd6 100644 --- a/package.json +++ b/package.json @@ -29,10 +29,10 @@ "async": "~0.2.10" }, "peerDependencies": { - "loopback-datasource-juggler": "~1.3.3" + "loopback-datasource-juggler": "~1.3.11" }, "devDependencies": { - "loopback-datasource-juggler": "~1.3.3", + "loopback-datasource-juggler": "~1.3.11", "mocha": "~1.17.1", "strong-task-emitter": "0.0.x", "supertest": "~0.9.0", diff --git a/test/hidden-properties.test.js b/test/hidden-properties.test.js index 65565341..356c20f7 100644 --- a/test/hidden-properties.test.js +++ b/test/hidden-properties.test.js @@ -7,14 +7,28 @@ describe('hidden properties', function () { options: {hidden: ['secret']}, dataSource: loopback.memory() }); + var Category = this.Category = this.app.model('category', { + dataSource: loopback.memory() + }); + Category.hasMany(Product); app.use(loopback.rest()); - - Product.create( - {name: 'pencil', secret: 'secret'}, - done - ); + Category.create({ + name: 'my category' + }, function(err, category) { + category.products.create({ + name: 'pencil', + secret: 'a secret' + }, done); + }); }); + afterEach(function(done) { + var Product = this.Product; + this.Category.destroyAll(function() { + Product.destroyAll(done); + }); + }) + it('should hide a property remotely', function (done) { request(this.app) .get('/products') @@ -27,4 +41,19 @@ describe('hidden properties', function () { done(); }); }); + + it('should hide a property of nested models', function (done) { + var app = this.app; + request(app) + .get('/categories?filter[include]=products') + .expect('Content-Type', /json/) + .expect(200) + .end(function(err, res){ + if(err) return done(err); + var category = res.body[0]; + var product = category.products[0]; + assert.equal(product.secret, undefined); + done(); + }); + }); });