OData babel рдкреНрд▓рдЧрдЗрди


рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХрд╛ рдУрдбрдЯрд╛ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред


рдХреЛрд▓рд╛рд╣рд▓-рдкреНрд▓рдЧрдЗрди-ts2odata рдкреНрд▓рдЧрдЗрди рдкрд╛рд░реНрд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдПрд╕рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ TsToOdata рдкреБрд╕реНрддрдХрд╛рд▓рдп , рдЬрд┐рд╕рдХрд╛ рд╡рд░реНрдгрди рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, Typed OData рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рдореЗрдВ рдкреНрд░рд╢реНрдиреЛрдВ ред


TsTOOdata рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдиреБрдХрд╕рд╛рди рдкреИрдХреЗрдЬреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдерд╛ рдХреЛрд▓рд╛рд╣рд▓/ рдкрд╛рд░реНрд╕рд░, рдХреЛрд▓рд╛рд╣рд▓/ рдкрд╛рд░рдЧрдорди, рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рднреА рдХрд╛рдлреА рдорд╣рдВрдЧрд╛ рдерд╛ред рдЕрдм рдпреЗ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдФрд░ рдХреЛрдб рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдПрдХ рдЕрд▓рдЧ ts2odata-babel рдкреИрдХреЗрдЬ рдореЗрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ ред рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП, рдЖрдк ts2odata рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ ts2odata-babel рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЖрдк рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд╕рд╛рде рдЕрд╕реЗрдВрдмрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рд╕рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдкреНрд▓рдЧрдЗрди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЖрдкрдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ ts2odata рдФрд░ рдХреНрд░реЙрд╕- рдлрд╝реЛрдХрд╕ рдкреИрдХреЗрдЬ рдкрд░ рдХреЗрд╡рд▓ рджреЛ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реЛрдВрдЧреА ред


рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдВрдХреБрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


npm install --save-dev @babel/core @babel/cli
npm install ts2odata
npm install --save-dev babel-plugin-ts2odata

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдореЗрдВ babel.config.js рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ:


module.exports = {
    plugins: [
        [
            'babel-plugin-ts2odata',
            {
                odataNamespace: 'OdataToEntity.Test.Model'
            }
        ]
    ]
};

odataNamespace рдХреБрдВрдЬреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╣реА рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдпрджрд┐ рдЖрдкрдХреА OData рд╕реЗрд╡рд╛ рдмрд┐рдирд╛ рдирд╛рдорд╕реНрдерд╛рди (Namespace) рдХреЗ рдПрдиреНрдпреВрдорд░реЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреА рд╣реИред


scripts package.json:


"build": "tsc --build && npx babel ./source --out-dir ./lib"

source TypeScript, lib JavaScript .


TypeScript:


let price = 2.1;
let orders = context.Orders.filter(o => o.Items.every(i => i.Price >= price), { price })
    .select(i => { return { orderYear: i.Date.getFullYear() } }).toArrayAsync();

:


let price = 2.1;
let orders = context.Orders.filter("Items/all(d:d/Price ge {price})", {
  price
}).select("[{\"expression\":\"year(Date)\",\"alias\":\"orderYear\",\"kind\":1}]").toArrayAsync();

OData :


http://localhost:5000/Orders?$filter=Items/all(d:d/Price+ge+2.1)&$compute=year(Date)+as+orderYear

, code.js QueryTests.ts, output.js .
vue.js.


TypeScript, , , - .


All Articles