express - 在数据库中保存 Sequelize 查询文本

标签 express sequelize.js

我有一个 sequelize 查询,我想将它保存在数据库中,然后按需执行。为了做到这一点,我首先测试这在作为字符串的变量中如何工作(因为在数据库中它将作为字符串存储):

queryToRun = models.user.findAll({
  attributes: [
    ['name', 'name'],
    [Sequelize.literal("COUNT(DISTINCT(user.id))"), "user_count"]
  ],
  group: Sequelize.col("user.name")
})

有了这个查询,我想像这样使用它:
Promise.all(queryToRun);

我能够成功地将对象(带有属性等进入 findAll 的对象)保存为字符串然后执行,但我不知道如何保存查询的每个部分。我想保存实际的 "model.user.findAll()" 字符串并稍后对其进行评估。

这很重要,因为我想定义运行 findAll 所需的模型并将其保存在数据库中。

最佳答案

这实际上相当简单

  • 不要使用多行字符串,因为某些原因它会触发函数调用
  • 使用 eval 评估字符串

  • 例子:
    let queryToRun = 'models.project.findAll({})';
    Promise.all([eval(queryToRun)]);
    

    关于express - 在数据库中保存 Sequelize 查询文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60627328/

    相关文章:

    node.js - 使用 Express.js 设置持久性 cookie

    mysql - Sequelizejs 中的 .save 和 .create 有什么区别?

    node.js - 使用额外的列进行多对多的序列化

    node.js - 无法安装 Sequelize NPM node_modules/.sequelize.DELETE/node_modules/debug

    javascript - 包括 node.js + express + ejs 上的 css 和 js 文件

    node.js - Angular 9 SSR 404 未找到带有状态代码的页面

    node.js - Foundation 使用 Libsass 导入,node-sass-middleware 未编译

    mongodb - 无法在 CoffeeScript 中使用 MongoDB、Mongoose、Node.js 和 Express 显示数据

    javascript - node.js - 无法使用 Sequelize 连接到 MYSQL 数据库

    mysql - Sequelize (v1.5) 和 Node