ReferenceError:未定义值

时间:2017-03-11 08:04:45

标签: javascript node.js azure-cosmosdb

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

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()如果我写硬编码的前例'SELECT * FROM rss r where r.id = "5"'它工作正常。我知道documentdb只接受id值的字符串,因此我使用了toString()方法。还有其他解决办法吗?

1 个答案:

答案 0 :(得分:0)

我通过更改查询解决了这个问题。

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

现在工作正常。