我正在NodeJS中编写AWS lambda函数来从WebAPI OData V4服务中读取数据(http://localhost/SomeService/ $ metadata) 我使用JaySvcUtil生成了元数据文件,并在Lambda函数中引用了生成的文件
'use strict';
let $data = require('jaydata');
let meta = require('./apiData');
exports.handler = function (event, context) {
var con = new DataContext({
name: 'oData',
oDataServiceHost: 'http://localhost/SomeService'
});
con.onReady(function () {
$data.Users.forEach(function(data) {
console.log(data.Id);
});;
};
不幸的是,当调用onReady方法时,未定义Users对象以及我的API所发布的任何其他类型。
知道我做错了吗?
答案 0 :(得分:0)
原来,jaysvcutil创建的生成代码不能与nodejs一起使用。 不应使用.extend,而应使用.define,如文档中所述。
$data.Class.define('Project.User', $data.Entity, null, {
'UserID': { 'key': true, 'type': 'Edm.Int32', 'nullable': false, 'computed': true },
});
$data.Class.define('$Project.Types.Context', $data.EntityContext, null, {
Users: { type: $data.EntitySet, elementType: Project.User }
});
上下文初始化回调应定义如下:
jayContext = new $Project.Types.Context({
name: 'oData',
oDataServiceHost: 'http://localhost/SomeService'
});
jayContext.onReady(function (serviceContext) {
serviceContext.Users.forEach(function (user) {
console.log(user.UserID);
});
context.done(null, 'Hello World');
});