2015-10-21 335 views
1

使用Dexie我試圖添加一個新條目,但只有在指定了id號時才能添加它。我希望id作爲主鍵自動遞增,我該如何實現?如何使用dexie.js添加新條目

這工作

var db = new Dexie("user-database"); 
db.version(1).stores({ 
    users: "id++" 
}); 
db.open(); 
var insert_data = {id:5,name: "Paul", email: "[email protected]", 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: "[email protected]", user_group: 2}; 
db.users.add(insert_data);</code> 

任何想法?

+1

嘗試使用'++ id',而不是'ID ++' – Griffith

+0

都能跟得上不起作用 –

+0

提供小提琴 –

回答

2

id會附加檢查它。

截圖: screenshot of inserted data

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","[email protected]");//default content 
document.querySelector("button").addEventListener("click",function(e){ 
    add_new(document.getElementById("name").value,document.getElementById("email").value); 
}); 
+0

非常感謝 –

0

您必須在重新定義其他模式之前刪除數據庫。

更新小提琴:https://jsfiddle.net/dfahlander/ks7Laacs/9/

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:'[email protected]'}; 
    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:'[email protected]'}; 
    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); 
}); 

如果你不改變主鍵,但只是添加或刪除索引,你可能已經關閉了數據庫,然後(2)與變化添加db.version索引或添加/刪除的表格。