<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.firebase.com/js/client/2.1.2/firebase.js"></script>
<script src="https://cdn.rawgit.com/js-data/js-data/master/dist/js-data.js"></script>
<script src="https://cdn.rawgit.com/js-data/js-data-firebase/master/dist/js-data-firebase.js"></script>
<script src="script.js"></script>
</head>
<body>
<h1>Open up your console to see the output</h1>
</body>
</html>
var store = new JSData.DS();
var fbAdapter = new DSFirebaseAdapter({
basePath: 'https://js-data-firebase.firebaseio.com'
});
store.registerAdapter('fb', fbAdapter, {
default: true
});
var Triangle = store.defineResource({
name: 'triangle',
relations: {
hasOne: {
point: [{
localKey: 'point1Key',
localField: 'point1'
}, {
localKey: 'point2Key',
localField: 'point2'
}, {
localKey: 'point3Key',
localField: 'point3'
}]
}
}
});
var Point = store.defineResource({
name: 'point'
});
store.utils.Promise.all([
// clean up, so my firebase doesn't get filled up
Triangle.destroyAll(),
Point.destroyAll()
]).then(function() {
return store.utils.Promise.all([
// bypassCache: true, so we can better simulate loadRelations,
// otherwise they would already be in the store
Point.create({
x: 0,
y: 0
}, {
bypassCache: true
}),
Point.create({
x: 5,
y: 0
}, {
bypassCache: true
}),
Point.create({
x: 2.5,
y: 5
}, {
bypassCache: true
})
]);
}).then(function(points) {
return Triangle.create({
type: 'equilateral',
point1Key: points[0].id,
point2Key: points[1].id,
point3Key: points[2].id
});
}).then(function(triangle) {
console.log(triangle);
// let's load the triangle's points
// instead of "['point']" you could do "['point1', 'point2', 'point3']"
return Triangle.loadRelations(triangle.id, ['point']);
}).then(function(triangle) {
console.log(triangle);
console.log(triangle.point1);
console.log(triangle.point1 === Point.get(triangle.point1Key));
console.log(triangle.point2);
console.log(triangle.point2 === Point.get(triangle.point2Key));
console.log(triangle.point3);
console.log(triangle.point3 === Point.get(triangle.point3Key));
console.log(triangle);
}).then(function() {
return store.utils.Promise.all([
// clean up again, so my firebase doesn't get filled up
Triangle.destroyAll(),
Point.destroyAll()
]);
});