【问题标题】:Order by a field in custom model defined in belongs to many association. Also select few fields按定义的自定义模型中的字段排序属于许多关联。也选择几个字段
【发布时间】:2017-08-22 12:49:12
【问题描述】:

你在做什么?

我有一个用户模型和一个卡片模型。它们通过自定义表“favouriteCards”相互关联。现在我想选择用户的所有卡片favourited,并按createdAt字段排序。

models.user.belongsToMany(models.card, { 
     through: 'favouriteCards' 
});

models.card.belongsToMany(models.user, {
    through: 'favouriteCards',
    scope: {
        status: 'active'
    }
});

我正在编写这段代码来获取用户拥有的所有卡片:-

this.database.user.findById(userId).then((user: any) => {
user.getCards({
    attributes: ['id', 'storyId', 'mediaUri', 'mediaType', 'externalLink']
})
    .then((cards: Array<any>) => {
        if (cards.length) {
            return Promise.resolve(cards);
        } else {
            throw 'No favourite cards';
        }
    }).then((cards: Array<any>) => {
        return reply({
            "cards": cards
        });
    }).catch((err) => {
        console.log(err);
        return reply(Boom.notFound("User doesn't have any favourite card"));
    });
});

实际发生了什么?

现在,在输出中,我得到一个密钥 favouriteCards。我不想在输出中使用这个键。另外,我想根据favouriteCardscreatedAt 列过滤我的结果。

输出 JSON

"cards": [
    {
       "id": 1,
       "storyId": 3,
       "mediaUri": "http://localhost/api/docs#!/admin/postStory",
       "mediaType": "image",
       "favouriteCards": {
          "createdAt": "2017-08-05T11:45:29.000Z",
           "updatedAt": "2017-08-05T11:45:29.000Z",
           "cardId": 1,
           "userId": 1
        }
    }
 ]

【问题讨论】:

    标签: node.js sequelize.js hapijs


    【解决方案1】:

    尝试使用空数组包含选项

    例如

    this.database.user.findById(userId).then((user: any) => {
    user.getCards({
        attributes: ['id', 'storyId', 'mediaUri', 'mediaType', 'externalLink'],
        include: []
    })
        .then((cards: Array<any>) => {
            if (cards.length) {
                return Promise.resolve(cards);
            } else {
                throw 'No favourite cards';
            }
        }).then((cards: Array<any>) => {
            return reply({
                "cards": cards
            });
        }).catch((err) => {
            console.log(err);
            return reply(Boom.notFound("User doesn't have any favourite card"));
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-30
      • 1970-01-01
      • 1970-01-01
      • 2013-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多