mose16: Totaler Anfängerfehler? JavaScript & Nodejs

Hallo, bei der übergabe läuft etwas schief und ich finde den fehler nicht.

Ver 1 ist OK (statisch)

var jsonQuery = require('json-query');

let result = jsonQuery('SCCM_SerWin[ServiceWindowID=B188996E-C31B-43AD-86EE-B00D1530EE57]', {
data: ServiceWindowIDs}).value;

console.log (result)

/*result ={
    "ServiceWindowID": "D3F02944-8F26-4B68-A56A-9D8C4E1475AB",
    "Name": "AOS WPD Maintenance Window 2017-02: 25.02.2017 22:00",
    "ServiceWindowSchedules": "02D92BC018080000",
    "StartTime": "/Date(1488056400000)/",
    "Duration": 180,
    "IsGMT": false,
    "IsEnabled": true,
    "RecurrenceType": 1,
    "ServiceWindowType": 5,
    "CollectionID": "P0100972",
    "CollectionName": null
} */

Ver2 das selbe nur dynamisch klappt nicht

var jsonQuery = require('json-query');

console.log( ('\'SCCM_SerWin['+ searchqname + '=' + nmwuid + ']\'') );
//Console > 'SCCM_SerWin[ServiceWindowID=B188996E-C31B-43AD-86EE-B00D1530EE57]'

let result = jsonQuery(('\'SCCM_SerWin['+ searchqname + '=' + nmwuid + ']\''), {
data: ServiceWindowIDs}).value;

//result = null

Die Klammer sollte eigentlich für entsprechende ersetzung sorgen bevor es an jsonQuery geht.. Könnt ihr mir sagen warum das nicht so ist? versteh die welt nicht mehr..

Peinlich berührt.. Mose

  1. Tach!

    bei der übergabe läuft etwas schief und ich finde den fehler nicht.

    Ich sehe ihn auch nicht. Aber meine generelle Vorgehensweise wäre: wenn etwas übergeben wird, muss es auch am anderen Ende übernommen werden. Und zwischendrin muss es gegebenenfalls transportiert werden. Das wären die Stellen, die ich nun überprüfen würde. Also dass die Daten an der Gegenstelle so ankommen wie erwartet. Falls das gegeben ist, dann ist das erstmal noch mystischer. Falls nicht, wäre zu überprüfen, ob sie auf dem Weg richtig sind. Vielleicht also mit dem Wireshark nachschauen.

    Und natürlich die üblichen verdächtigen Fehlermeldungssenken abklappern, also Logfiles und EventViewer (falls Windows).

    dedlfix.

    1. Hallo dedlfix,

      ich schon. Die beiden Aufrufe sind nicht äquivalent.

      Mose, warum fügst Du in der dynamischen Version zusätzliche Hochkomma ein?

      Rolf

      --
      sumpsi - posui - clusi
      1. Tach!

        ich schon. Die beiden Aufrufe sind nicht äquivalent.

        Mose, warum fügst Du in der dynamischen Version zusätzliche Hochkomma ein?

        Jetzt, wo du es sagst … Aber ich vermute mal, dass das auch in Fehlermeldungen angemeckert worden ist.

        dedlfix.

        1. Hallo dedlfix,

          Mag sein. Vielleicht hat jsonQuery noch eins raus, bevor er mit "kapier ich nicht" endet.

          @@mose16, es ist in solchen Fällen hilfreich, komplexe Ausdrücke zu splitten. Also:

          let query = 'SCCM_SerWin[ServiceWindowID=B188996E-C31B-43AD-86EE-B00D1530EE57]';
          console.log (query);
          let result = jsonQuery(query, { data: ServiceWindowIDs}).value;
          console.log (result);
          

          Wenn Du das dann mit der dynamischen Version wiederholst, siehst Du, dass da ein anderer Query-String herauskommt.

          Rolf

          --
          sumpsi - posui - clusi
    2. Hallo dedlfix,

      Problem erkannt..

      var jsonQuery = require('json-query');
      
      console.log( ('\'SCCM_SerWin['+ searchqname + '=' + nmwuid + ']\'') );
      //Console > 'SCCM_SerWin[ServiceWindowID=B188996E-C31B-43AD-86EE-B00D1530EE57]'
      
      let result = jsonQuery(('SCCM_SerWin['+ searchqname + '=' + nmwuid + ']'), {
      data: ServiceWindowIDs}).value;
      

      Problem: string im string

      Im debug wurde es so angezeigt "'SCCM_SerWin[ServiceWindowID=B188996E-C31B-43AD-86EE-B00D1530EE57]'"

      Vielen dank, ohne deine Anmerkung hätte ich nicht nochmal hingeschaut.. Mose