NEWS
[Gelöst] [Problem] getObjectView liefert Fehler 404 Cannot find view "<viewname>"</viewname>
-
Folgendes Problem:
Ich habe in der io-package.json eine View zur Vereinfachung einer Suchanfrage angelegt.
"objects": [ { "_id": "_design/klf200", "language": "javascript", "views": { "listSingleProductScenes": { "map": "function(doc) {\n if (doc._id.match(/^klf200\\.[0-9]+\\.scenes\\.[0-9]+$/) && doc.native && doc.native.products.length == 1)\n {\n emit([doc.native.products[0].name, doc.native.products[0].status], {id: doc.native.id, name:doc.native.name});\n }\n }" } } } ]Wenn ich die View später abfragen möchte, bekomme ich einen Fehler 404: Cannot find view "klf200". Was ich komisch finde, ist der Verweis auf 'klf200', weil die View eigentlich 'listSingleProductScenes' heißt.
Mein Abfrage sieht so aus:
adapter.objects.getObjectView( 'klf200', 'listSingleProductScenes', {startkey: [productName, level], endkey: [productName, 101]}, function (err, doc) { ... <- Hier bekomme ich den Fehler im err-Object. } );Anbei noch die komplette io-package.json.
! {
! "common": {
! "name": "klf200",
! "version": "0.5.0",
! "news": {
! "0.5.0": {
! "en": "beta version",
! "de": "Betaversion",
! "ru": "Бета версия",
! "pt": "Versão beta",
! "fr": "Version bêta",
! "nl": "Beta versie"
! },
! "0.0.1": {
! "en": "initial adapter",
! "de": "Initiale Version",
! "ru": "Первоначальный адаптер",
! "pt": "Versão inicial",
! "fr": "Version initiale",
! "nl": "Eerste release"
! }
! },
! "title": "KLF-200 Adapter",
! "desc": {
! "en": "Runs scenes on a KLF-200 Interface",
! "de": "Startet Szenen auf einem KLF-200 Interface"
! },
! "platform": "Javascript/Node.js",
! "mode": "daemon",
! "icon": "klf200.png",
! "enabled": true,
! "license": "MIT",
! "extIcon": "https://raw.githubusercontent.com/ioBro … klf200.png",
! "keywords": ["KLF-200", "vis", "GUI", "graphical"],
! "readme": "https://github.com/ioBroker/ioBroker.kl … /README.md",
! "loglevel": "info",
! "type": "hardware",
! "restartAdapters": ["vis"]
! },
! "native": {
! "host": "http://velux-klf-",
! "password": "velux123",
! "pollInterval": 60
! },
! "objects": [
! {
! "_id": "_design/klf200",
! "language": "javascript",
! "views": {
! "listSingleProductScenes": {
! "map": "function(doc) {\n if (doc._id.match(/^klf200\.[0-9]+\.scenes\.[0-9]+$/) && doc.native && doc.native.products.length == 1)\n {\n emit([doc.native.products[0].name, doc.native.products[0].status], {id: doc.native.id, name:doc.native.name});\n }\n }"
! }
! }
! }
! ]
! }Was mache ich falsch?
Viele Grüße
Michael
-
https://github.com/ioBroker/ioBroker.js … r.js#L2389
Dein Fehler tritt wohl auf, wenn das Object "_design/<name>" nicht existiert. Hast du das in io-package.json hinzugefügt, nachdem du den Adapter erstmalig installiert hattest? Dann könnte das ein bekannter Bug sein und du musst den Adapter (nicht nur die Instanz) neu installieren.</name>
-
Perfekt. Das war es.
Leider liefert meine View noch nicht die gewünschten Ergebnisse. Kann man das irgendwie debuggen? Und muss ich die Installation bei jeder Änderung immer wieder durchführen oder kann ich die View zumindest übergangsweise auch im Code erzuegen?
Michael
-
Leider liefert meine View noch nicht die gewünschten Ergebnisse. Kann man das irgendwie debuggen? `
Keine Ahnung, habe noch nie mit Views gearbeitet. Eventuell per console.log und manuellem Ausführen des Adapters über die Konsole:/opt/iobroker/node_modules/adapter_dir$ node main.js --force --logsUnd muss ich die Installation bei jeder Änderung immer wieder durchführen oder kann ich die View zumindest übergangsweise auch im Code erzuegen? `
Pervar obj = { /* Objekt mit allen Views aus io-package.json */ }; adapter.setForeignObject('_design/klf200', obj);dürfte das gehen.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden