{"id":15295095,"url":"https://github.com/danieloneill/nodedbi","last_synced_at":"2026-02-13T21:33:08.160Z","repository":{"id":29515590,"uuid":"33053974","full_name":"danieloneill/nodedbi","owner":"danieloneill","description":"LibDBI addon for Node.js","archived":false,"fork":false,"pushed_at":"2020-09-09T09:40:04.000Z","size":34,"stargazers_count":1,"open_issues_count":5,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-07T06:34:56.805Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danieloneill.png","metadata":{"files":{"readme":"README.eo.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-03-28T23:15:03.000Z","updated_at":"2020-09-09T09:38:24.000Z","dependencies_parsed_at":"2022-09-04T11:00:30.970Z","dependency_job_id":null,"html_url":"https://github.com/danieloneill/nodedbi","commit_stats":{"total_commits":25,"total_committers":6,"mean_commits":4.166666666666667,"dds":0.64,"last_synced_commit":"9df5bd5199141dc614e84cfb19d65dcab16ec903"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/danieloneill/nodedbi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danieloneill%2Fnodedbi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danieloneill%2Fnodedbi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danieloneill%2Fnodedbi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danieloneill%2Fnodedbi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danieloneill","download_url":"https://codeload.github.com/danieloneill/nodedbi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danieloneill%2Fnodedbi/sbom","scorecard":{"id":320245,"data":{"date":"2025-08-11","repo":{"name":"github.com/danieloneill/nodedbi","commit":"9df5bd5199141dc614e84cfb19d65dcab16ec903"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Code-Review","score":0,"reason":"Found 0/26 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 1 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T01:10:56.160Z","repository_id":29515590,"created_at":"2025-08-18T01:10:56.160Z","updated_at":"2025-08-18T01:10:56.160Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29418515,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T06:24:03.484Z","status":"ssl_error","status_checked_at":"2026-02-13T06:23:12.830Z","response_time":78,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-09-30T17:08:36.252Z","updated_at":"2026-02-13T21:33:08.133Z","avatar_url":"https://github.com/danieloneill.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NodeDBI\n\nNodeDBI estas LibDBI interfaco por Node.js.\n\nPor la fontkodo bonvolu vizitu [la github pagxo](https://github.com/danieloneill/nodedbi)\n\nLa NodeDBI interfaco liveras tradiciajn metodojn por uzi SQL datumbazoj, kaj ankaux la kapablo por pagxi rezultatojn kun persistaj objektoj. Vidu la suban ekzemplojn.\n\nGxi estas plejparte plena, kaj kontribuoj estas tre aprezas.\n\nPor uzi tio cxi, vi deve havas LibDBI-n kaj gxiajn rubrikojn.\n\nPor Debian aux Ubuntu, **apt-get install libdbi-dev**.\n\nPor konstrui, tajpu: **node-gyp configure build** kaj **node-gyp install** por instali.\n\n## Ekzemploj\n\nMi havas kelke da Gistojn kiu eble uza:\n\n* [node.js + nodedbi, oportunaj metodoj](https://gist.github.com/danieloneill/2605640f020c89fb806a)\n* [Nodejs + libdbi + pagxi rezultatoj](https://gist.github.com/danieloneill/d069be8e02e852008cbd)\n\n```javascript\n#!/usr/bin/nodejs\n\nvar mod = require('nodedbi');\n\nvar args = { 'host':'localhost', 'port':3306, 'username':'root', 'password':'', 'type':'mysql', 'dbname':'test' };\n\nvar obj = new mod.DBConnection( args );\n\nvar q = obj.query(\"SELECT * FROM users WHERE username=%1 OR id=%2\", ['doneill', 6]);\nif( !q )\n{\n        console.log(\"SQL peto malsukcesis: \"+obj.lastError());\n        return;\n}\n\n// Simple:\nvar results = q.toArray();\n\n// Malsimple, se eble rapida:\nvar rc = q.count();\nconsole.log(\"Nombro da vicoj: \"+rc);\n\nvar fc = q.fieldCount();\nconsole.log(\"Nombro da kolumnoj: \"+q.fieldCount());\n\nvar fna = [];\nfor( var x=0; x \u003c fc; x++ )\n{\n        var fn = q.fieldName(x+1);\n        console.log(\"Rubrikonomo (\"+(x+1)+\"): \"+fn);\n        fna.push( fn );\n}\n\nfor( var y=0; y \u003c rc; y++ )\n{\n        q.seek(y+1);\n        for( var x=0; x \u003c fc; x++ )\n        {\n                var v = q.value(x+1);\n                console.log( y+\" [\"+fna[x]+\"] = [\"+v+\"]\" );\n        }\n}\n\n```\n\n# Metodoj\n\n## DBConnection( parametroj )\n`Verku novan konekton al datumbazon.`\n\n```javascript\nvar NodeDBI = require('nodedbi');\nvar parametroj = { 'type':'sqlite', 'dbname':'test' };\nvar db = new NodeDBI.DBConnection(parametroj);\n```\n\nLa parametro **type**  (en parametroj) estas deva. Ioj parametroj estas datumbazo specifa. Por datumbazo specifa parametroj vizitu [la libdbi-drivers pagxo](http://libdbi-drivers.sourceforge.net/docs.html).\n\n* `parametroj` - Objekto kun LibDBI-specifaj konektaj parametroj en sxlosilo:valoro paroj.\n* `Revenos`: Datumbaza objekto, aux **undefined** se malsukcese.\n\n---\n\n## DBConnection::query(petoLiteraro, [parametroj])\n`Verku kaj ekzekutu datumbazan peton.`\n\n* `petoLiteraro` - Peto liter-ar-o kun lokokupiloj por parametroj %1, %2, ktp.\n* `parametroj` - Faktultativa listo de parametroj por la lokokupiloj.\n* `Revenos`: DBQuery objekto, aux **false** se la peton malsukcesas por ia kialo.\n\n---\n\n## DBConnection::lastError()\n`Revenu la plejnovan eraron literaron.`\n\n* `Revenos`: Supre menciita.\n\n---\n\n## DBConnection::lastInsertId([nomo])\n`La aktualan vicen legitimilon generis de la antauxa INSERT komando.`\n\n* `nomo` - La nomon de la vico (\"sequence\", ne \"row\",) aux NULL se la datumbazon ne havas vicojn eksplicitan.\n* `Revenos`: La aktualan vicen legitimilon generis de la antauxa INSERT komando. Se la datumbazo ne uzi vicojn, tio cxi revenos 0.\n\n---\n\n## Query()\n`Tio cxi objekto estas revenas per` **DBConnection::query** `kaj malpermesas verki de mem alie.`\n\n---\n\n## Query::count()\n`Revenu la nombron da vicoj de la rezultaro.`\n\n* `Revenos`: Supre menciita, havas unu da taskon.\n\n---\n\n## Query::fieldCount()\n`Revenu la nombron da kolumnoj de la rezultaro.`\n\n* `Revenos`: Supre menciita.\n\n---\n\n## Query::fieldName(kolumnIndekso)\n`Revenu la kampo-nomon de specifa kolomno-indekso. Indeksoj komencas cxe` **1** `, ne 0.`\n\n* `kolumnIndekso` - La kolumno-indekso de la rezultan objekton. Kolumno-indeksoj en LibDBI komencas cxe 1, ne 0.\n* `Revenos`: La nomon de la kampo cxe la specifike indekson aux **undefined** kaj escepto se la indekso estas malvalida.\n\n---\n\n## Query::fieldIndex(kampnomo)\n`Revenu la kampo-indekso de specifa kampo-nomon. Indeksoj komencas cxe` **1** `, ne 0.`\n\n* `kampnomo` - La kampo-nomo de la rezultan objekton.\n* `Revenos`: La kolomnon-indekson kun la specifike kampo-nomo aux **undefined** kaj escepto se la nomon maltrovas. Kolumnejn indeksojn en LibDBI komencas cxe **1**, ne 0.\n\n---\n\n## Query::seek(vico)\n`Muvu al la specifan vicon en la rezultaro. Vicen indeksojn en LibDBI komencas cxe` **1** `, ne 0.`\n\n* `vico` - La indekso en la rezultaro. Vicejn indeksojn komencas cxe **1**, ne 0.\n* `Revenos`: **true** por sukcese, **false** aux escepto se malsukcese.\n\n---\n\n## Query::previousRow()\n`Muvu al la antauxan vicon en la rezultaro.`\n\n* `Revenos`: **true** por sukcese, **false** aux escepto se gxi jam al la unuan rezulton.\n\n---\n\n## Query::nextRow()\n`Muvu al la sekvan vicon en la rezultaro.`\n\n* `Revenos`: **true** por sukcese, **false** aux escepto se gxi jam al la lastan rezulton.\n\n---\n\n## Query::currentRow()\n`La aktuala vicindekso, komencigxi al 1.`\n\n* `Revenos`: La aktualan vicen indekson. Vicejn indeksojn komenci cxe **1**, ne 0.\n\n---\n\n## Query::value(kampo)\n`La valoro de la kampo al la aktuala vico de la rezultaro.\n\n**kampo** rajtas estu aux numere indekso aux kampnomo.\n\nValorojn estas konvertis al la plej bone Javascript tipo. Binara datumoj estas revenas kiel [Buffer-objekton](https://nodejs.org/api/buffer.html).\n\n* `Revenos`: La valoron.\n\n---\n\n## Query::begin()\n`Komencu transakcio.`\n\n* `Revenos`: **true** por sukcese, **false** se malsukcese aux se la datumbazo ne uzas (aux ne havas) transacia subteni.\n\n---\n\n## Query::commit()\n`Commits a transaction, i.e. writes all changes since the transaction was started to the database.`\n\n* `Returns`: **true** on success, **false** if the database cannot or will not commit the transaction.\n\n---\n\n## Query::rollback()\n`Rolls back a transaction, i.e. reverts all changes since the transaction started.`\n\n* `Returns`: **true** on success, **false** if the database cannot or will not commit the transaction.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanieloneill%2Fnodedbi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanieloneill%2Fnodedbi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanieloneill%2Fnodedbi/lists"}