重命名 "rows" in findAndCountAll Sequelize



Sequelize中使用findAndCountAll时是否可以使用不同的键来result.row

我正在使用findAndCountAll进行分页。我得到这样的数据结构:

{
"count": 8,
"rows": [
{
"id": 6,
"title": "brands",
"color": "#D83660",
"createdAt": "2020-05-12T13:51:47.000Z",
"updatedAt": "2020-05-12T13:51:47.000Z"
}
]
}

我想将"行"重命名为其他名称。我该怎么做? 我在文档中找不到它。 https://sequelize.org/master/class/lib/model.js~Model.html#static-method-findAndCountAll

您有两个选择,fork Sequelize,并更改函数,使其返回所需的新名称,或者如果您只是想更改名称,因为您将结果传递到其他地方,如 Salesh 所述,您可以执行以下操作:

let result = await MyModel.findAndCountAll()
result.newName = result.rows
delete result.rows

编辑:或者,您可能希望将它们复制到一个全新的对象中,返回的 Sequelize 对象通常具有额外的方法,您可能不想稍后意外调用,所以您会这样做

let data = {
count: result.count,
newName: result.rows
}

注意:这也适用于行数组中的对象。

这在 Sequelize 中是不可能的。 正如您在文档中看到的那样。

public static async findAndCountAll(options: object): Promise<{count: number, rows: Model[]}>

这基本上就是库中这个函数的返回方式,并且没有选项可以更改它。 最好的方法是在.then函数之后分配result.rows并打包,或者在获得它后使用asyc/await。

这在MongoDB中是可能的,但在这里我们没有预测。

最新更新