2017-03-11 135 views
0

我是Node.js的新手,并且遇到函数问题。如果我把他放在同一个文件中,这个函数可以正常工作。但是如果我从另一个文件调用它,它不起作用。当我使用调试器时,我发现我可以调用该函数,但是当我使用该参数时,它一直说ReferenceError:值未定义。ReferenceError:未定义值

documentDBConfig.getById = function (feedId) { 
    return new Promise((resolve, reject) => { 
     client.queryDocuments(
      feedCollectionUrl,    
      'SELECT * FROM feeds r where r.id =' + feedId.toString() 
     ).toArray((err, results) => { 
      if (err) reject(err); 
      else { 
       if (typeof results[0] !== 'undefined' && results[0] !== null) { 
        documentDBConfig.feedsArray = results; 
       } 
       console.log(); 
       resolve(results); 
      } 
     }); 
    }); 
}; 

module.exports = documentDBConfig; 

只是因为它口口声声说,我用同一个对象的属性太documentDBConfig.feedsId。但它仍然说ReferenceError: value is not defined。在调试器中,它会看到该值并将其分配给documentDBConfig.feedsId,但不会传递给其他文件。没有价值的作品这个功能很好。我该如何解决这个问题?

documentDBConfig.feedsId = req.params.id; 
console.log(documentDBConfig.feedsId); 
    documentDBConfig.getById(documentDBConfig.feedsId) 
     .then(() => res.json(documentDBConfig.feedsArray)); 

编辑:我发现这个问题是由查询'SELECT * FROM feeds r where r.id =' + feedId.toString()造成的。如果我把它写硬编码forexample 'SELECT * FROM rss r where r.id = "5"'它工作正常。我知道documentdb只接受一个id值的字符串,因此我使用toString()方法。有没有其他解决方案?

回答

0

我已经通过更改查询来解决问题。

'SELECT * FROM rss r where r.id =' + '"' + documentDBConfig.feedsId + '"' 

现在工作正常。