如何使用 dexie.js 添加新条目
Posted
技术标签:
【中文标题】如何使用 dexie.js 添加新条目【英文标题】:How do I add a new entry using dexie.js 【发布时间】:2016-01-19 20:54:33 【问题描述】:使用 Dexie 我正在尝试添加一个新条目,但如果我指定了 ID 号,我只能添加它。我希望 id 作为主键自动递增,我该如何实现?
这行得通
var db = new Dexie("user-database");
db.version(1).stores(
users: "id++"
);
db.open();
var insert_data = id:5,name: "Paul", email: "test@test.com", user_group: 2;
db.users.add(insert_data);
但是,如果我从插入对象中取出 id,它就不起作用。见下文
这不起作用
var db = new Dexie("user-database");
db.version(1).stores(
users: "id++"
);
db.open();
var insert_data = name: "Paul", email: "test@test.com", user_group: 2;
db.users.add(insert_data);</code>
有什么想法吗?
【问题讨论】:
尝试使用++id
而不是id++
这里jsfiddle.net/ks7Laacs/3在运行后检查indexeddb。
【参考方案1】:
id
将被附加检查它。
截图:
Demo
html:
Name:<input type="text" name="name" id="name"/><br/>
Email<input type="text" name="email" id="email"/></br>
<button>add new</button>
javascript:
// Declare db instance
var db = new Dexie("test-database");
// Define Database Schema
db.version(1).stores(
users: "++id, name, email"
);
// Open Database
db.open();
function add_new(name,email)
// Interact With Database
db.transaction('rw', db.users, function ()
// Let's add some data to db:
insert_object = name:name,email:email;
db.users.add(insert_object);
).catch(function(err)
console.error(err.stack || err);
);
add_new("susheel singh","susheel61@gmail.com");//default content
document.querySelector("button").addEventListener("click",function(e)
add_new(document.getElementById("name").value,document.getElementById("email").value);
);
【讨论】:
【参考方案2】:您必须在重新定义另一个架构之前删除数据库。
更新小提琴:https://jsfiddle.net/dfahlander/eb9yt0s7/
var db = new Dexie("test-database");
db.version(1).stores(
users: 'id,name,email'
);
document.write ('hello');
db.delete().then(function ()
return db.open ();
).then (function ()
var insert_object = id:2,name:'Bob',email:'test@test.com';
return db.users.add(insert_object);
).then(function()
return db.delete (); // don't forget to delete if changing prim key
).then (function ()
db = new Dexie("test-database");
db.version(1).stores(
users: 'id++'
);
return db.open();
).then(function ()
var insert_object = name:'Jim',email:'jim@test.com';
db.users.add(insert_object);
).then(function ()
return db.users.toArray();
).then (function (result)
document.write(JSON.stringify (result));
).catch (function (e)
document.write ('error: ' + e);
);
如果您没有更改主键,而只是添加或删除索引,则您可以关闭数据库,然后添加 db.version (2) 以及更改索引或添加 /removed 表。
【讨论】:
以上是关于如何使用 dexie.js 添加新条目的主要内容,如果未能解决你的问题,请参考以下文章
如何在Safari 10.1.2及更高版本中使用Dexie.js(v 2.0.1)数据库?