我一直在读一些devs/dbas建议在所有数据库调用中使用事务,甚至是只读调用.虽然我理解在事务中插入/更新在事务中读取的好处是什么?
人们在相当复杂的数据库中维护数据更改历史记录的成功策略是什么?我经常使用和开发的应用程序之一可以真正受益于更全面的跟踪记录随时间变化的方式.例如,现在记录可以具有多个时间戳和修改的用户字段,但是我们目前没有用于记录多个更改的方案,例如,如果回滚操作.在完美的世界中,可以在每次保存之后重建记录,等等.
关于DB的一些信息:
我正在寻找一个非常简单的ORM框架,用于Android上的SQLite.我一直在测试ActiveAndroid,但是没有一个例子能够在Eclipse上构建.
那么,人们如何在SQLite for Android中实现"多对多"关系?您如何反映有关删除行并保证数据库完整性的级联?
想象一下,一个web应用程序存储一些数据资源,其中一些id存储每个数据的三个附件(例如pdf).
URL方案是
data/{id}/attachment1
data/{id}/attachment2
data/{id}/attachment3
Run Code Online (Sandbox Code Playgroud)
存在用于在服务器端实现CRUD操作的GET/PUT/DELETE操作的附件的RESTful API.
让id为123,我想执行一个操作
GET
file/123/attachment1返回新附件)GET file/123/attachment2返回404)该更新应该是原子 -由服务器或什么都没有进行完整的更新.
运用简单PUT file/123/attachment1而DELETE file/123/attachment2不是原子,因为客户可以在PUT之后崩溃,并且服务器有没有暗示他应该在这种情况下,做了回退.
那么如何以RESTful方式实现操作呢?
我想过两个解决方案,但它们似乎都不是100%RESTful:
虽然这确保了原子性,但我怀疑这是RESTful,因为我使用不同的参数列表重载PATCH方法,这违反了统一接口约束.
DELETE transaction/data/123/attachment2)的附件上调用PUT和DELETE,并通过事务/ data/123上的PUT将此版本资源的提交传达给服务器.这确保了原子性,同时必须实现额外的服务器端逻辑来处理更改相同资源的多个客户端以及从未提交的崩溃客户端.虽然这似乎与REST一致,但似乎违反了无国籍的约束.事务资源的状态不是服务状态而是应用程序状态,因为每个事务资源都与单个客户端相关联.
我有点被困在这里,所以任何想法都会有所帮助,谢谢!
CREATE和EDIT控制器中有许多重复的代码.这些控制器可以组合成一个,以最大限度地减少重复代码.
问题:我需要区分在表单提交上使用哪种方法 - 例如create()或edit().
解决方案:我可以添加$scope.mode例如并设置$scope.mode='edit'用户是否单击"编辑"按钮或设置$scope.mode='add'用户是否单击"添加"按钮.
我可以使用服务来最小化重复代码,但仍然会有重复的代码.例如,在两个控制器中,我有cancel()方法,它清除表单并隐藏它.我可以在服务中存储clearForm()和hideForm(),但是这些代码将在两个控制器中重复:
$scope.cancel = function() {
Service.clearForm();
Service.hideForm();
};
Run Code Online (Sandbox Code Playgroud)
问题:
我目前正在尝试在Rails和Django之间做出决定..
目前,我发现红宝石更优雅,所以我考虑Django的唯一理由是管理面板..
我没有任何经验,但我必须快速开发一个应用程序以满足截止日期.
在rails中是否有一种方法可以根据您的模型(例如django中的管理面板)为所有CRUD操作生成一个(接近生产就绪)视图集?(即,它会查看您的模型并看到您有一个属于某个组的人,并在创建人视图上为该组生成一个下拉列表)?
如果不是最快的方式(没有手动编写)获得所有CRUD视图的初稿?
谢谢,
丹尼尔
使用AngularJS通过REST进行CRUD操作的最佳实践是什么?
特别是这里的Angular-Way是什么.通过这个我的意思是使用最少的代码和最默认的角度设置来实现这一点.
我知道$ resource和它的默认操作.我不确定如何实现/命名端点和使用哪些控制器.
对于此示例,我想实现一个简单的用户管理系统,用于创建/更新/删除/列出用户.由于我自己实现了Server-Endpoints,因此我可以完全自由地以最友好的角度进行操作.
我喜欢的答案是这样的:
服务器端点:
GET /service/users -> array of users
GET /service/user/new -> return an empty user with default values which has no id
POST /service/user/new -> store a new user and create an id. return the saved user.
POST /service/user/:ID -> save an existing user. Return the saved user
DELETE /service/user/:ID -> delete an existing user
Run Code Online (Sandbox Code Playgroud)
角服务:
.factory( 'User', [ '$resource', function( $resource ){
return $resource( '/service/user/:userId', { userId: '@id' …Run Code Online (Sandbox Code Playgroud) 如果我有多对多的关系,那么用它的sync方法更新关系是非常容易的.
但是我会用什么来同步一对多的关系呢?
posts:id, namelinks:id, name, post_id在这里,每个Post可以有多个Links.
我想将与数据库中特定帖子相关联的链接与输入的链接集合(例如,从我可以添加,删除和修改链接的CRUD表单)同步.
应删除数据库中不存在于我的输入集合中的链接.应更新数据库和输入中存在的链接以反映输入,并且仅在我的输入中存在的链接应作为新记录添加到数据库中.
总结所需的行为:
经过几周的谷歌搜索和迄今为止只有一个Stackoverflown问题,我终于设法使用Material Table Component构建了我的Angular CRUD应用程序.它显示来自后端(JSON)的数据和CRUD操作我使用的对话框如图所示(这是编辑,对克罗地亚人抱歉).对话可能不是最好的方法,内联编辑可能会更好.但是,为了添加新项目,你需要像对话这样的东西.
我最后一件事就是如何相应地更新表中的字段.因此,当您在对话框中按"保存"时,数据会在后端(在MySQL表中)更新,但不会在前端更新.目前我有一个丑陋的解决方法,每次当你做更新时,它也刷新整个表.
无论如何这里的代码:
表组件:
export class BazaComponent implements OnInit {
....
constructor(public httpClient: HttpClient, public dialog: MatDialog) {
}
ngOnInit() {
this.loadData();
}
// TODO: Simplfy this...
addNew(ident: number, naziv: string, mt: number, kutija: number,
komada: number, jm: string, orginal: number, lokacija: number, napomena: string) {
console.log('add new clicked');
const dialogRef = this.dialog.open(AddDialogComponent, {
data: {ident: ident, naziv: naziv, mt: mt, kutija: kutija,
komada: komada, jm: jm, orginal: orginal, lokacija: lokacija, napomena: napomena …Run Code Online (Sandbox Code Playgroud) crud ×10
angularjs ×2
rest ×2
transactions ×2
android ×1
angular ×1
architecture ×1
atomic ×1
audit-trail ×1
controller ×1
database ×1
django ×1
django-admin ×1
eloquent ×1
laravel ×1
many-to-many ×1
one-to-many ×1
orm ×1
php ×1
postgresql ×1
ruby ×1
sql-server ×1
sqlite ×1
uml ×1