I have a code where I am getting a duplex stream and in that function I 
call a callback which return me the values from redis.


          function (index, arr, null, callback) {
          const streamObject = stream;
          const Id = arr[index].split(':')[0];
          const Version = arr[index].split(':')[1];
    
    
          console.log("STREAM RECEIVED IN SECOND 1");
          console.log(streamObject);//printing for the first time
          var response = this.ts.service(Id, Version, streamObject, (fn, 
type) => {
            console.log("STREAM RECEIVED IN SECOND 2");
            console.log(streamObject);
    }

here when I print the stream object for the first time I get the stream 
object as follows

    STREAM RECEIVED IN SECOND 1
    Stream {
      domain: 
       Domain {
         domain: null,
         _events: { error: [Function] },
         _eventsCount: 1,
         _maxListeners: undefined,
         members: [] },
      _events: 
       { end: [Function],
         data: [Function],
         drain: [Function: ondrain],
         error: [Function: onerror],
         close: [Function: cleanup] },
      _eventsCount: 5,
      _maxListeners: undefined,
      writable: true,
      readable: true,
      paused: false,
      autoDestroy: true,
      write: [Function],
      push: [Function],
      queue: [Function],
      end: [Function],
      destroy: [Function],
      pause: [Function],
      resume: [Function] }

and in the second time I get

STREAM RECEIVED IN SECOND 2

    Stream {
      domain: 
       Domain {
         domain: null,
         _events: { error: [Function] },
         _eventsCount: 1,
         _maxListeners: undefined,
         members: [] },
      _events: { end: [Function], data: [Function] },
      _eventsCount: 2,
      _maxListeners: undefined,
      writable: false,
      readable: false,
      paused: false,
      autoDestroy: true,
      write: [Function],
      push: [Function],
      queue: [Function],
      end: [Function],
      destroy: [Function],
      pause: [Function],
      resume: [Function],
      root: null }
so stream is getting modified I am not sure why is it happening, I am not 
doing anything with the stream in the function called.

this is how my service method look which I am calling 

    service(id, vn, requestObject, callback) {
        log.info("entering transformer service");
        var transformerCombinedKey = id + vn;
    
        if (!_.isString(transformerId)) {
          throw new TypeError("Expected a string for transformerId");
        }
    
        if (!(transformerCombinedKey in this.functionRepositoryStore)) {
          //FIXME: after using cache as a implementation should ret
          var persistenceClientPromise = 
this.persistenceClient.getTransformerByIdAndVersion(transformerId, 
versionNumber)
    
          persistenceClientPromise.then(
            (aJSONStringifiedTransformer) => {
              if (!aJSONStringifiedTransformer) {
                callback(new Error("The given transformerId, " + 
transformerId + ", was not found."));
                return;
              }
    
              this.functionRepositoryStore[transformerCombinedKey] = 
JSON.parse(aJSONStringifiedTransformer).transformerFunction;
              this.transformerTypeRepository[transformerCombinedKey] = 
JSON.parse(aJSONStringifiedTransformer).transformerType;
    
              const code = "var _ = require('lodash'); console.log('runnig 
VM1'); module.exports = " + 
this.functionRepositoryStore[transformerCombinedKey] + ';';
              var transformerFunction = vm.runInNewContext(code, sandbox);
              console.log("Calling callback inside the transformer 
service===1 ");
              console.log(JSON.stringify(transformerFunction));
              callback(transformerFunction, 
this.transformerTypeRepository[transformerCombinedKey]);
              return
            },
            (error) => {
              log.error("Error while getting transformer for Id " + 
transformerId + " and versionNumber " + versionNumber);
              callback(error, null);
            });
    
    
        } else {
    
          const code = "var _ = require('lodash'); console.log('runnig 
VM2'); module.exports = " + 
this.functionRepositoryStore[transformerCombinedKey] + '; ';
          var transformerFunction = vm.runInNewContext(code, sandbox);
          console.log("Calling callback inside the transformer service=== 
");
          console.log(JSON.stringify(transformerFunction));
          callback(transformerFunction, 
this.transformerTypeRepository[transformerCombinedKey]);
        }
      }
    
    }

this issue I see when I hit my app for the first time, when I hit it again 
without restarting the app, It works fine stream remain duplex also.
and also if I remove my call to redis this method , then stream doesn't 
change it works fine.

I am using waterfall and this is the second function of my waterfall model 
like

    async.waterfall([func1,func2], function (err, result) {
            if (err) {
              console.log(err);
              reject(err);
            } else {
              fulfill(result);
            }
    
          });
this first function also do the same thing but it works fine, the output of 
first is passed to the second.
this is how I create my stream

 

       let streamParser = JSONStream.parse('*');
                    streamParser.on('data', fn);
        
                    let toPassStreamObject = 
streamObject.pipe(JSONStream.stringify())
                      .pipe(streamParser)

streamObject is the stream which I get from my DB.

    fn (data) {
          data['Date'] = data["month"];
          delete data['month'];
        }


I stuck on this for some time.how to prevent stream from changing.

this 
<https://stackoverflow.com/questions/49578913/duplex-stream-getting-changed-in-callbacknode-js>
 
is the link to stakoverflow
  


-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to nodejs+unsubscr...@googlegroups.com.
To post to this group, send email to nodejs@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/42a43f4c-3670-4dff-adc2-53e930f6d3d8%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to