js-data-cloudmine
Version:
CloudMine adapter for js-data.
147 lines (138 loc) • 5.17 kB
HTML
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Demo</title>
<script src="node_modules/jquery/dist/jquery.js"></script>
<script src="node_modules/cloudmine/js/cloudmine.js"></script>
<script src="node_modules/js-data/dist/js-data.js"></script>
<script src="node_modules/js-data-adapter/dist/js-data-adapter.js"></script>
<script src="dist/js-data-cloudmine.js"></script>
<script type="application/javascript">
var ws = new cloudmine.WebService({
appid: "a758b154a3ac9d4be51843137448420c",
apikey: "3da0a6ebf56840f4bd027704f016f9c5"
});
var cloudmineAdapter = new JSDataCloudMine.CloudMineAdapter({
debug: true,
ws: ws
});
var userOptions = {
name: 'user',
relations: {
hasMany: {
post: {
localField: 'posts',
foreignKey: 'userId'
}
},
hasOne: {
profile: {
localField: 'profile',
foreignKey: 'userId'
},
}
}
};
var postOptions = {
name: 'post',
relations: {
belongsTo: {
user: {
localField: 'user',
foreignKey: 'userId'
}
},
hasMany: {
comment: {
localField: 'comments',
foreignKey: 'postId'
},
}
}
};
var commentOptions = {
name: 'comment',
relations: {
belongsTo: {
post: {
localField: 'post',
foreignKey: 'postId'
},
user: {
localField: 'user',
foreignKey: 'userId'
}
}
}
};
var profileOptions = {
name: 'profile',
relations: {
belongsTo: {
user: {
localField: 'user',
foreignKey: 'userId'
},
}
}
};
var store = new JSData.DataStore({debug: true});
store.registerAdapter('cm', cloudmineAdapter, {default: true});
var User = store.defineMapper('user', userOptions);
var Post = store.defineMapper('post', postOptions);
var Comment = store.defineMapper('comment', commentOptions);
var Profile = store.defineMapper('profile', profileOptions);
var createdUser;
var props = { name: 'John', age: 30 }
var props2 = { name: 'Steve', age: 20 }
// console.info('create', User.name, props)
store.create(User.name, props).then(() => {
return store.create(User.name, props2)
})
.then(() => {
return store.findAll(User.name, {age: 30}, {raw: true})
}).then((data) => {
console.log(data);
})
// .then(function (user) {
// createdUser = user;
// console.info('created', User.name, user)
// props = { email: 'foo@test.com', userId: createdUser.id }
// console.info('create', Profile.name, props)
// return store.create(Profile.name, props)
// })
// .then(function (profile) {
// console.info('created', Profile.name, profile)
// props = { content: 'foo', userId: createdUser.id }
// console.info('create', Post.name, props)
// return store.create(Post.name, props)
// })
// .then(function (post) {
// console.info('created', Post.name, post)
// props = { content: 'test2', postId: post[Post.idAttribute], userId: post.userId }
// console.info('create', Comment.name, props)
// return store.create(Comment.name, props)
// })
// .then(function (comment) {
// console.info('created', Comment.name, comment)
// console.info('find', Comment.name, comment[Comment.idAttribute])
// return store.find(Comment.name, comment[Comment.idAttribute], {'with': ['user', 'user.profile', 'post', 'post.user']})
// })
// .then(function (comment) {
// console.log('555555555555555555555555555555555555555555');
// console.info('found', Comment.name, comment)
// console.debug(comment, 'comment')
// console.debug(comment.post, 'comment.post')
// console.debug(comment.post.user, 'comment.post.user')
// console.debug(comment.user, 'comment.user')
// console.debug(comment.user.profile, 'comment.user.profile')
// })
// .catch(function (error) {
// console.error(error);
// })
</script>
</head>
<body>
</body>
</html>