Академический Документы
Профессиональный Документы
Культура Документы
Benoît Chesneau
07/02/2010 FOSDEM 2010
Monday, February 8, 2010
benoît chesneau
benoitc@apache.org
Couchapp, Couchbeam &
Couchdbkit maintainer
Web craftman
minimal web & opensource
{
"_id": "foo",
"_rev": "1-....",
"url": "http://apache.couchdb.org",
"vote": 1
}
{"couchdb":"Welcome","version":"0.11.0b6ba76f83-git"}
{"couchdb":"Welcome","version":"0.11.0b6ba76f83-git"}
• Web paradigm
{"couchdb":"Welcome","version":"0.11.0b6ba76f83-git"}
• Web paradigm
• Supported everywhere
{"couchdb":"Welcome","version":"0.11.0b6ba76f83-git"}
• Web paradigm
• Supported everywhere
http://wiki.apache.org/couchdb/Using_Views
http://wiki.apache.org/couchdb/Using_Views
http://wiki.apache.org/couchdb/Using_Views
• Design Doc
http://wiki.apache.org/couchdb/Using_Views
• Design Doc
• /db/_design/ddocname/_view
http://wiki.apache.org/couchdb/Using_Views
{
"rows":[
{
"key":"http://mysql.com",
json "value":-1
},
result {
"key":"http://apache.couchdb.org",
"value":2
}
]}
• Local Data
• Offline mode
• Decentralize exchanges
• Script : couchapp
• full CouchApp....,
• list
• update
• validation
• rewriting
• /db/_design/ddocname/_show/funname
• /db/_design/ddocname/_show/funname/docid
• render a doc
• could be cached
• /db/_design/ddocname/_list/funname/
viewname
• Render a view
• could be cached
function(head, req) {
send("head");
var row;
while (row = getRow()) {
log("row: " + toJSON(row));
send(row.key);
};
return "tail";
}
• /db/_design/ddocname/_update/funname/
docid
• on update
• Allows
you to throw https errors (forbidden,
unauthorized ...)
function unauthorized(message) {
throw({unauthorized : message});
};
if (userCtx.roles.indexOf('_admin') == -1) {
// admin can edit anything, only check when not admin...
if (newDoc._deleted)
forbidden("You may not delete a doc.");
}
};
• http://github.com/couchapp/couchapp
• On your phone
! !
• COUCHDB : http://couchdb.apache.org
• book : http://books.couchdb.org/relax