0

MongoDB と連携するカスタム コンポーネントを作成しています。MongoDB に接続するだけの CoffeeScript ファイルを作成し、noflo/components フォルダーに保存しました。

MongoBase.coffee

noflo = require "noflo"
mongodb = require "mongodb"
url = require "url"

class exports.MongoBase extends noflo.Component
  constructor: ->
    super
    @inPorts =
      url: new noflo.Port()

    @inPorts.url.on "data", (data) =>
      try
        @parseConnectionString(data)
        @MongoClient = mongodb.MongoClient;
        @MongoClient.connect @serverUrl, (err, db) ->
          if err
            console.log("Error in connecting to MongoDB")
          else
            console.log("Connected to MongoDB")
      catch error
        console.log(error)
  parseConnectionString: (connectionString) =>
    databaseUrl = try
      url.parse(connectionString)
    catch error
      console.log(error) 
    [..., @serverUrl, @databaseName] = databaseUrl.split('/')
    @serverUrl = "mongo://" + @serverUrl

次のエントリを component.json に追加しました

"MongoBase": "components/MongoBase.coffee"

これに加えて、コンポーネントのフローを確認するために mongo.fbp ファイルを作成しました。FBP ファイルには次のコードがあります。

'mongodb://localhost:27017/test' -> url DocReader(MongoBase)

を実行するnoflo mongo.fbpと、次のエラーが表示されます。

/home/saurabh/workspace/noflo/node_modules/fbp/lib/fbp.js:1628
        edges.forEach(function (o, i) {
              ^
TypeError: Object #<Object> has no method 'forEach'
  at Object.parser.registerEdges (/home/saurabh/workspace/noflo/node_modules/fbp/lib/fbp.js:1628:15)
  at peg$c25 (/home/saurabh/workspace/noflo/node_modules/fbp/lib/fbp.js:60:50)
  at peg$parseline (/home/saurabh/workspace/noflo/node_modules/fbp/lib/fbp.js:749:30)
  at peg$parsestart (/home/saurabh/workspace/noflo/node_modules/fbp/lib/fbp.js:282:12)
  at Object.parse (/home/saurabh/workspace/noflo/node_modules/fbp/lib/fbp.js:1650:18)
  at Object.exports.loadFBP (/home/saurabh/workspace/noflo/lib/Graph.js:1065:33)
  at /home/saurabh/workspace/noflo/lib/Graph.js:1116:24
  at fs.js:268:14
  at Object.oncomplete (fs.js:107:15)

私のコード、またはコードを実行するために使用している手順に何か問題がありますか?

4

1 に答える 1