Я создал OData Конточка с узлом, с помощью модуля OData-сервера с помощью JayData таким образом:
require("odata-server");
$data.Entity.extend("Service", {
Id: {type: "id", key: true, computed: true, nullable: false},
Name: {type: "string", nullable: false, maxLength: 50}
});
$data.EntityContext.extend("marketplace", {
Services: {type: $data.EntitySet, elementType: Service}
});
$data.createODataServer(marketplace, "/marketplace", 8081, "localhost");
console.log("Marketplace OData Endpoint created... Listening at 8081.");
Тогда , все еще с узлом, я создал веб-приложение Express, которое получает некоторые команды через запрос GET, подключается к конечной точке OData (все еще используя JayData) и получает оттуда некоторые данные, а затем отправляет результат клиенту (в следующий код он просто отправляет 200), таким образом (путем определения маршрута):
require("jaydata");
...
app.get("/addCompare/:id", function(req, res) {
console.log("Comparison request for: " + req.params.id);
$data.Entity.extend("Service", {
Id: {type: "id", key: true, computed: true, nullable: false},
Name: {type: "string", nullable: false, maxLength: 50}
});
$data.EntityContext.extend("marketplace", {
Services: {type: $data.EntitySet, elementType: Service}
});
db = new marketplace("http://localhost:8081/marketplace");
db.onReady(function() {
var arr = db.Services.filter(function(s) {return s.Name.startsWith("Serv");}).toArray();
console.dir(arr);
});
res.send(200);
});
Проблема заключается в том, что когда я пытаюсь использовать этот код (используя этот запрос GET, например: http://www.localhost:8080/addCompare/NTM0M2ZkNjU2YjljNWMwODRiOGYyYTU5
), я всегда получаю эту ошибку на сервере и после этого сбой. Вот ошибка:
TypeError: Value '$data.Object' not convertable to '$data.ObjectID'
{ name: 'TypeError',
message: 'Value \'$data.Object\' not convertable to \'$data.ObjectID\'',
data:
{ __metadata:
{ type: 'Service',
id: 'http://localhost:8081/marketplace/Services(\'NTM0M2ZkNjU2YjljNWMwODRiOGYyYTU5\')',
uri: 'http://localhost:8081/marketplace/Services(\'NTM0M2ZkNjU2YjljNWMwODRiOGYyYTU5\')' },
Id: 'NTM0M2ZkNjU2YjljNWMwODRiOGYyYTU5',
Name: 'Service51' } }
Где я ошибаюсь? Спасибо ...
Спасибо за ваши ответы Виктор. Не могли бы вы объяснить мне, как правильно выполнить декодирование? Я пытаюсь это сделать: 'db.Services.single (function (s) {return s.Id == this.id;}, {id: atob (req.params.id)}, function (s) {console. log (s);}); 'но я получаю тот же результат ошибки ... – Marco