小编Mik*_*stö的帖子

使用NodeJS的PostgreSQL JSON类型的最佳方法是什么

我在这里面临一些分析瘫痪.使用NodeJS编程数据库有很多选择,我有点迷失.

我正在使用Express构建一个API服务器,它将与移动设备上的HTML5应用程序通信.我决定使用PostgreSQL,因为我的数据是"非常关系"的,而PostgreSQL新的JSON数据类型将使我的生活更轻松.

不幸的是,我找不到PostgreSQL的任何库利用新的JSON数据类型或暴露它.我想过使用Sequelize和一个很好的ORM或使用raw pgsql模块滚动我自己的东西.

有人能说清楚吗?我在一些NodeJS stackexchange上问过这个问题,但我认为我们没有具体的那个.

postgresql json node.js

17
推荐指数
2
解决办法
1万
查看次数

如何使python正则表达式将多个模式匹配到相同的索引

是否有可能获得所有重叠匹配,这些匹配从同一索引开始,但来自不同的匹配组?

例如,当我从"ABC"寻找模式"(A)|(AB)"时,正则表达式应该返回以下匹配:

(0,"A")和(0,"AB")

python regex match overlapping

9
推荐指数
2
解决办法
5544
查看次数

MySQL ORM的Node.js选项

我想创建一个node.js和基于MySQL的应用程序.Google和Stack Overflow为Javascript ORM提供了许多选项:

但是,我找不到支持子查询,连接,转换,存储过程,与MySQL集群兼容的完美ORM,并且具有良好的文档和社区支持.

还有其他选择吗?在做出决定时我应该考虑哪些因素?

node.js sequelize.js node-orm2 sails.js waterline

5
推荐指数
1
解决办法
4879
查看次数

Knexfile不读取环境变量?

我正在使用 docker 和 knex 构建节点/快速服务进行数据库交互。我有一个env_file(在 docker-compose 文件中定义)定义了一些环境变量。该应用程序正在正确读取它们,因为 aconsole.log(process.env.DATABASE_USER);将记录正确的值。

我按照 knex 文档设置了一个 knexfile,如下所示:

module.exports = {
  development: {
    client: 'pg',
    connection: {
      host: process.env.DATABASE_HOST,
      port: process.env.DATABASE_PORT,
      user: process.env.DATABASE_USER,
      password: process.env.DATABASE_PASSWORD,
      database: process.env.DATABASE_NAME_DEV,
    },
    migrations: {
      directory: __dirname + '/db/migrations',
    },
    seeds: {
      directory: __dirname + '/db/seeds',
    },
  },
};
Run Code Online (Sandbox Code Playgroud)

如果我将这些值硬编码到 knexfile 中,一切都很好。我可以连接到数据库、运行迁移等。

当我使用环境变量(如上)时,它们返回未定义。这是为什么?

更新:

我的 docker compose 文件api.env只是一个基本的 .env 文件:

version: '3.3'

services:
  db:
    container_name: db
    build:
      context: ./services/api/src/db
      dockerfile: Dockerfile
    ports:
      - 5435:5432
    environment: …
Run Code Online (Sandbox Code Playgroud)

migration command-line-interface node.js docker knex.js

5
推荐指数
2
解决办法
6838
查看次数

Knex where不允许将单个字符串传递给`.where()`

我在使用Knex和SQLite用Node.js编写的程序中有以下一行:

await db.table("books")
         .innerJoin("items", "items.id", "books.item_id")
         .with("idx", db.raw(`instr(items.name, ?) asc`, name))
         .where("idx > 0")
         .orderBy("idx")
         .select()
Run Code Online (Sandbox Code Playgroud)

db通过调用创建的变量在哪里knex(config)?但是,该函数raw(sql)似乎不起作用,因为它在运行时不断抛出此错误:

TypeError:Formatter.operator不允许使用“未定义”运算符(I:\ git \ server \ node_modules \ knex \ lib \ formatter.js:138:13)

在QueryCompiler_SQLite3.whereBasic(I:\ git \ server \ node_modules \ knex \ lib \ query \ compiler.js:525:100)

在QueryCompiler_SQLite3.where(I:\ git \ server \ node_modules \ knex \ lib \ query \ compiler.js:314:32)

我做错了什么?

如果相关的话,我正在用Typescript写作,正如您所看到的await,我正在使用ES6。但是,如果我排除,则此查询执行正常with(),并且with()拒绝接受不是由创建的内容raw()

编辑:

如果我对此进行测试,则表明问题出在with()而不在raw()

console.log("name: " …
Run Code Online (Sandbox Code Playgroud)

javascript sqlite node.js typescript knex.js

2
推荐指数
1
解决办法
1922
查看次数