Express SequelizeJS使用带有查询参数的If条件

Express SequelizeJS使用带有查询参数的If条件,express,sequelize.js,Express,Sequelize.js,我有一个应用程序路由,如果存在查询,我希望能够为我的where子句使用查询参数。我最初的方法是在get中使用if/else子句,并根据查询参数是否存在返回两个不同的查询,但我得到了一个SyntaxError:Unexpected token.错误,我的然后(函数…),这告诉我这不是正确的方法。我如何使用Sequelize实现一些功能 /*==== / ====*/ appRoutes.route('/') .get(function(req, res){ c

我有一个应用程序路由,如果存在查询,我希望能够为我的where子句使用查询参数。我最初的方法是在get中使用if/else子句,并根据查询参数是否存在返回两个不同的查询,但我得到了一个
SyntaxError:Unexpected token.
错误,我的
然后(函数…
),这告诉我这不是正确的方法。我如何使用Sequelize实现一些功能

/*====   /  ====*/

appRoutes.route('/') 

    .get(function(req, res){

        console.log(req.query.dataDateStart);
        console.log(req.query.dataDateEnd);

        if(req.query.dataDateStart && req.query.dataDateEnd){
        return models.Comment.findAll({
            where: {
                dataDateStart: {
                    $gte: dateFormatting(req.body.dataDateStart)
                },
                dataDateEnd: {
                    $lte: dateFormatting(req.body.dataDateEnd)
                }
            },
            order: 'commentDate DESC',
            include: [{
                model: models.User,
                where: { organizationId: req.user.organizationId },
                attributes: ['organizationId', 'userId']
            }],
            limit: 10
        })
        } else {
        return models.Comment.findAll({
            order: 'commentDate DESC',
            include: [{
                model: models.User,
                where: { organizationId: req.user.organizationId },
                attributes: ['organizationId', 'userId']
            }],
            limit: 10
        })
        }

        .then(function(comment){
            function feedLength(count){
                if (count >= 10){
                    return 2;
                } else {
                    return null;
                }
            };

            res.render('pages/app/activity-feed.hbs',{
                comment: comment,
                user: req.user,
                secondPage: feedLength(comment.length)
            });
        });
    })

    .post(function(req, res){
        function dateFormatting(date){
            var newDate = new Date(date); 
            return moment.utc(newDate).format();
        }

        console.log("This is a date test" + dateFormatting(req.body.dataDateStart));
        //Testing if the query will come through correctly.
        models.Comment.findAll({
            order: 'commentDate DESC',
            where: {
                dataDateStart: {
                    $gte: dateFormatting(req.body.dataDateStart)
                },
                dataDateEnd: {
                    $lte: dateFormatting(req.body.dataDateEnd)
                }
            },
            include: [{
                model: models.User,
                where: { 
                    organizationId: req.user.organizationId,
                },
                attributes: ['organizationId', 'userId']
            }],
            limit: 10
        }).then(function(filterValues) { 
            var dataDateStart = encodeURIComponent(dateFormatting(req.body.dataDateStart));
            var dataDateEnd = encodeURIComponent(dateFormatting(req.body.dataDateEnd));
            res.redirect('/app?' + dataDateStart + '&' + dataDateEnd);
        }).catch(function(error){
            res.send(error);
        })
    });

这是一个语法错误。then函数只能在thenable对象上调用。在上面截取的代码中,.then不应用于任何内容。相反,它在if else语句后调用

if(...) {
  ...
}
else {
  ...
}
// .then() is not called on any object --> syntax error 'unexpected "."'
.then()
如果只想配置where参数,可以根据url查询定义where对象。 批准路线(“/”)

.get(function(req, res){

    console.log(req.query.dataDateStart);
    console.log(req.query.dataDateEnd);

    var whereObject = {};
    // CHeck for queries in url
    if(req.query.dataDateStart && req.query.dataDateEnd){
        whereObject = {
            dataDateStart: {
                $gte: dateFormatting(req.body.dataDateStart)
            },
            dataDateEnd: {
                $lte: dateFormatting(req.body.dataDateEnd)
            }
        };
    }

    models.Comment.findAll({
        where: whereObject,
        order: 'commentDate DESC',
        include: [{
            model: models.User,
            where: { organizationId: req.user.organizationId },
            attributes: ['organizationId', 'userId']
        }],
        limit: 10
    })
    .then(function(comment){
        function feedLength(count){
            if (count >= 10){
                return 2;
            } else {
                return null;
            }
        };

        res.render('pages/app/activity-feed.hbs',{
            comment: comment,
            user: req.user,
            secondPage: feedLength(comment.length)
        });
    });
})

.post(function(req, res){
    function dateFormatting(date){
        var newDate = new Date(date);
        return moment.utc(newDate).format();
    }

    console.log("This is a date test" + dateFormatting(req.body.dataDateStart));
    //Testing if the query will come through correctly.
    models.Comment.findAll({
        order: 'commentDate DESC',
        where: {
            dataDateStart: {
                $gte: dateFormatting(req.body.dataDateStart)
            },
            dataDateEnd: {
                $lte: dateFormatting(req.body.dataDateEnd)
            }
        },
        include: [{
            model: models.User,
            where: {
                organizationId: req.user.organizationId,
            },
            attributes: ['organizationId', 'userId']
        }],
        limit: 10
    }).then(function(filterValues) {
        var dataDateStart = encodeURIComponent(dateFormatting(req.body.dataDateStart));
        var dataDateEnd = encodeURIComponent(dateFormatting(req.body.dataDateEnd));
        res.redirect('/app?' + dataDateStart + '&' + dataDateEnd);
    }).catch(function(error){
        res.send(error);
    })
});