How to specify Strongloop model schema?
Asked Answered
H

1

0

enter image description here

I try override find api of strongloop rest endpoint. I want to return an array of objects. But how do I specify the schema for the object? As you can see from the picture above, the model schema is empty.

Below is the code of my company model remoteMethod:

    Company.remoteMethod(
        'find',
        {
            accepts: {arg: 'msg', type: 'string'},
            returns: {type: 'array', root: true},
            http: {path: '/', verb:'get'}
        }
    )
Hoseahoseia answered 25/1, 2016 at 2:2 Comment(3)
Did you create a company model? If so, what is the configuration? That config defines your schema... Look at the documentation for how to create models.Cougar
@jakerella: Yes, I create a company model. But I want to overwrite the api /companies {GET} by the remote method and it is already able to be achieved. My problem is that, in the api explorer, the Model Schema is [{}], which is not showing the properties of the object.Hoseahoseia
Aaah, I see... I'm not sure how to do that.Cougar
M
3

If I understand you right, your'e trying to show at this section the returned model as follows:

[
  {
    "companyProperty1": "companyProperty1Type",
    "companyProperty2": "companyProperty2Type",
    .
    .
    "companyPropertyN": "companyPropertyNType",
  }
]

In order to achieve this kind of return type representation, you need to define your return type in remoteMethod options to be an array of the desired model.

Here is your code, with the required edit, using modelName propery of Model base class:

Company.remoteMethod(
    'find',
    {
        accepts: {arg: 'msg', type: 'string'},
        returns: {type: [Company.modelName], root: true},
        http: {path: '/', verb:'get'}
    }
)
Magnificat answered 25/1, 2016 at 14:13 Comment(5)
What does Company.modelName refer to? Can you give an example? ThxHoseahoseia
Edited answer, added reference. Model.modelName returns the model name of the caller model. in your case is simple and you can just write 'Company', but when using mixins for example, it has to be more general.Magnificat
Thanks very much. Now it can show the schema. Another question is, how do I customise this schema? I mean if my original model contains {propsA.propsB}, however I only need propsA. How am I able to achieve it?Hoseahoseia
I'm not sure I understood your question, but if you're asking how to hide some of the properties of the model, see my answer here: #35040316 it might answer your questionMagnificat
Sorry, I have one more question. What if I find propsA is not really a nice name, I want to display it as propsA1. Is it possible?Hoseahoseia

© 2022 - 2024 — McMap. All rights reserved.