首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript CRUD Admin for Spring-Data HATEOAS后端

Javascript CRUD Admin for Spring-Data HATEOAS后端
EN

Stack Overflow用户
提问于 2016-01-19 09:22:53
回答 1查看 808关注 0票数 5

我们正在使用一个Spring-Boot Spring-Data后端,该后端使用带有@RepositoryRestResource注释的JPARepositories。我们希望通过javascript前端管理这些存储库(例如CRUD)中的表,而不必进行编码工作。我们研究了各种替代方案,如LightAdmin、JHipster和ng-admin。

我们无法让LightAdmin工作,因为它依赖于比我们运行的版本老得多的Spring-Data版本。它与最新最好的Spring-Data版本不兼容。

我们尝试过JHipster,但它搭建了我们不想要的所有服务和控制器,因为@RepositoryRestResource免费提供给你。

我们尝试使用ng-admin,但它在HATEOAS上下文中不能很好地工作;我们必须放入太多的映射才能使其部分工作。

所以我的问题是。有没有一个类似于ng-admin、JHipster和LightAdmin的产品,可以让我们轻松地CRUD我们的@RepositoryRestResource JPA存储库,这样我们就不必编写样板CRUD代码了?

EN

回答 1

Stack Overflow用户

发布于 2019-04-18 10:03:44

代码语言:javascript
复制
may be you can use my awesome code :


db.js 

const sqlite3 = require("sqlite3").verbose()
const db = new sqlite3.Database("./book.db")

module.exports = db

setup.js

const db = require("./db.js")

const query = [
    `
    CREATE TABLE IF NOT EXISTS
    contacts (
        contactID  INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
        name TEXT,
        company TEXT,
        telephone TEXT,
        email TEXT UNIQUE
    )`,
    `
    CREATE TABLE IF NOT EXISTS
    groups (
        groupID  INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
        name TEXT
    )`,
    `
    CREATE TABLE IF NOT EXISTS
    group_contacts (
        group_contactsID  INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
        contactID INTEGER NOT NULL,
        groupID INTEGER NOT NULL,
        FOREIGN KEY(contactID) REFERENCES contacts(contactID),
        FOREIGN KEY(groupID) REFERENCES groups(groupID)

    )`
]

for (let i = 0; i < query.length; i++){
    db.run(query[i], (err) =>{
        console.log(err)
    })
}

index.js

const controller = require("./controller.js")
let input = process.argv.slice(2)
let cmd = input[0]
let data = input.slice(1)

switch(cmd){
    case "createContact":
    controller.createContact(data)
    break

controller.js

const contact = require("./model/contact.js")
const group = require("./model/group.js")
const groupContact = require("./model/contact-group.js")
const view = require("./view.js")
class Controller{
    static createContact(data){
        contact.create(data, (err, output) => {
            if (err){
                view.createError(err)
            } else {
                view.createSuccess(output)
            }
        })
    }
    static readContact(data){
        contact.read(data, (err, output) => {
            if (err){
                view.readError(err)
            } else {
                view.readSuccess(output)
            }
        })  
    }
    static updateContact(data){
        contact.update(data, (err) => {
            if (err){
                view.updateError(err)
            } else {
                view.updateSuccess(data)
            }
        })
    }
    static deleteContact(data){
        contact.delete(data, (err) => {
            if (err){
                view.deleteError(err)
            } else {
                view.deleteSuccess(data[0])
            }
        })
    }
}
module.exports = Controller

model.js

const db = require("../db.js")
class Contact{
    constructor(name, company, phone, email){
        this.name = name
        this.company = company
        this.telephone = phone
        this.email = email
    }
    static create(data, cb){
        db.serialize((err) => {
            if (err){
                cb(err, null)
            } else {
                let newContact = new Contact(data[0], data[1], data[2], data[3])
                let query = `
                INSERT INTO contacts (name, company, telephone, email) 
                VALUES ('${data[0]}', '${data[1]}', '${data[2]}', '${data[3]}')`
                db.run(query, (err) => {
                    if (err){
                        cb(err, null)
                    } else {
                        cb(null, newContact)
                    }
                })
            }
        })
    }
    static update(data, cb){
        db.serialize((err) => {
            if (err){
                cb(err, null)
            } else {
                let query = `
                UPDATE contacts SET ${data[1]} = '${data[2]}' WHERE contactID = ${data[0]}`
                db.get(query, (err) => {
                    if (err){
                        cb(err)
                    } else {
                        cb(null)
                    }
                })
            }
        })
    }
    static read(data, cb){
        db.serialize((err) => {
            if (err){
                cb(err, null)
            } else {
                let query = `
                SELECT contactID, name, company, telephone, email FROM contacts WHERE contactID = ${data[0]}`
                db.get(query, (err, result) => {
                    if (err){
                        cb(err, null)
                    } else {
                        cb(null, result)
                    }
                })
            }
        })
    }
    static delete(data, cb){
        db.serialize((err) => {
            if (err){
                cb(err, null)
            } else {
                let query = `
                DELETE FROM contacts WHERE contactID = ${data[0]}`
                db.get(query, (err) => {
                    if (err){
                        cb(err)
                    } else {
                        cb(null)
                    }
                })
            }
        })
    }
}

module.exports = Contact

view.js


class View {
    static createError(err){
        console.log(err)
        console.log('=====> ERROR')
    }
    static createSuccess(output){
        console.log(output)
        console.log('=====> SUCCESS')
    }
    static readError(err){
        console.log(err)
        console.log('=====> ERROR')
    }
    static readSuccess(output){
        console.log(output)
        console.log('=====> SUCCESS')
    }
    static updateError(err){
        console.log(err)
        console.log('=====> ERROR')
    }
    static updateSuccess(output){
        console.log(output)
        console.log('=====> SUCCESS')
    }
    static deleteError(err){
        console.log(err)
        console.log('=====> ERROR')
    }
    static deleteSuccess(output){
        console.log(output)
        console.log('=====> SUCCESS')
    }
    static undefined(output){
        console.log(output)
        console.log('=====> UNDEFINED')
    }

}

module.exports = View
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34867014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档