Моя цель - сохранить простую связь между двумя ветвями на моем сервере OData.Breeze.js: как сохранить отношение сущностей с помощью адаптера OData
Я настроить сервер, я могу:
- вставки данных
- данных запроса
- создать связь между двумя объектами на стороне клиента
- НО не в состоянии сохраняйте отношения на стороне сервера.
Любые идеи о том, что мне не хватает?
Ниже мои детали установки
- Я использую OData/MongoDB бэкенд работает JayData на Node.js (VirtualBox, Ubuntu 12.04, Node.js, MongoDB)
- я создал простая модель данных с пользователем и лицом, основанным на this stack overflow question. Это определение DataModel JayData
>
$data.Class.define("$org.Types.user", $data.Entity, null, {
Id: {type: "id", key: true, computed: true, nullable: false },
Person: { type: "$org.Types.person", inverseProperty: "User", required:true },
EmailAddress: { type: "string"},
Password: { type: "string"}
}, null)
$data.Class.define("$org.Types.person", $data.Entity, null, {
Id: {type: "id", key: true, computed: true, nullable: false },
User: { type: "$org.Types.user", inverseProperty: "Person"},
FirstName: { type: "string"},
LastName: { type: "string"}
}, null);
$data.Class.defineEx("$org.Types.Context", [$data.EntityContext, $data.ServiceBase], null, {
User: {type: $data.EntitySet, elementType: $org.Types.user } ,
Person: {type: $data.EntitySet, elementType: $org.Types.person }
});
exports = $org.Types.Context;
- Я могу запросить данные с помощью Breeze.js
- Я могу вставить пользователей и Person объектов с помощью Breeze. JS
- Я могу установить связь в Breeze, и я вижу изменение сущностей
- Я обновленный Breeze.js к 1.3.3
>
var manager = new breeze.EntityManager('api/');
// other breeze initialization stuff, metadata etc.
var person = manager.createEntity('Person', undefined, breeze.EntityState.Detached);
var user = manager.createEntity('User', undefined, breeze.EntityState.Detached);
// set other fields, name, email, password
user.Person(user);
manager.addEntity(user);
manager.addEntity(person);
// save the changes
manager.saveChanges().then(function() { // etc
Но я вижу только два OData пост для двух лиц, но ничего, чтобы связать эти две структуры вместе
- Я исключила адаптер OData как как WebAPI и OData адаптер вызывает те же функции в базе кода Breeze, и есть несколько Breeze/WebAPI, которые демонстрируют возможность запроса и вставки связанных объектов.
- Я не видел образец Breeze.js/OData, который, кажется, обращается к этому.
- Ближайшим примером, который работает, является datajs code sample. Он помещает связанный объект в/$ links/для создания отношений (чего я не вижу в адаптере OData ни Breeze.js, ни JayData).
Спасибо, что код сработал и отправил ожидаемое значение. Хотя я получаю сообщение об ошибке на стороне сервера при попытке сохранить Person, я получаю следующее: «TypeError: Object #
Он работает при использовании нового [модуля npm-сервера odata-сервера] (http : //jaydata.org/blog/how-to-set-up-a-nodejs-odata-endpoint-with-odata-server). Спасибо за вашу помощь. – arno