2017-01-30 8 views
0

モジュール変数を渡しますデータベースに追加して、この場合の文字列を返しますparams = 'query'param + ' YO!'で文字列を取得しようとしているので、それが動作していることを知っています。何が間違っていますか?Node.jsのは、私がこれを持って結果を取り戻す

test.jsにコールバックが必要ですか?

UPDATE 1私はまだので、私はこれが今、まだように見えることはできませんpromiseifiedてい渡さparams値を返し、param + ' YO!'

UPDATE 2 [OK]を返さないでとquery.jsコールバックを追加しましたその結果は、ここではまだ動作していない更新されたコード

test.js

var query = require('./helpers/query') 

console.log(query.searchQuery()) 

query.js

var ura = require('unique-random-array') 
var strings = require('./strings') 
var qs = ura(strings.queryString) 
var qsSq = ura(strings.queryStringSubQuery) 
var query = qs() + qsSq() 

module.exports = { 
    searchQuery: function() { 
    var promise = new Promise(function(resolve, reject) { 
     var db = require('./queryDB') 
     // Check key isn't in db already, key being the query 
     db.get(query, function(err, value) { 
     if (typeof(value) !== 'undefined') { 
      console.log('ALREADY IN DB', query) 
      return 
     } 
     else { 
      // Put a search query 
      db.put(query, Date(), function(err) { 
      if (err) return console.log('Ooops!', err) // some kind of I/O error 
      // console.log('LOGGED QUERY STRING', query) 
       // return query + ' YO!' 
      }) 
     } 
     }) 
     resolve(query, 'all good') 
    }) 

    promise.then(function(result) { 
     // console.log(result) 
     return result 
    }).catch(function(err) { 
     // console.error('ERR', err) 
    }) 
    } 
} 

答えて

0

データベースクエリは、おそらく非同期ですので、あなたは、クエリが完了した後にコールバックするためにいくつかの方法が必要です。 現在のところ、クエリをトリガーして元のqueryStringを返します。クエリが実行されると、クエリの結果は破棄されます。

これを達成する1つの方法は、コールバック関数をクエリヘルパに渡すことです。よりクリーンなソリューションは、約束を使用することです。このような場合に約束を使用する方法の詳細については、on MDNをご覧ください。

+0

渡されたパラメータを返したコールバックを追加しましたが、修正された文字列は返しませんでした – spences10

+0

さて、おそらくそれを正しく使用しなかったでしょう。コードを見ることなく伝える方法はありません。 – Timo

+0

コードが問題になっていますか?他に何か要りますか? – spences10

関連する問題