我在文档中的某处读到AWS API Gateway包含对Swagger的支持,但Swagger现在更正式地称为OpenAPI规范,并且已经碰到主要版本3.0.
我\xe2\x80\x99 的任务是在工作中对我们的 Node 应用程序进行 docker 化。当谈到node_modules时,我与我们的首席开发人员有点分歧。
\n他在 dockerfile 中提倡类似的东西。他的理由是 docker 镜像将更具确定性,在这一点上我不\xe2\x80\x99t 完全不同意他的观点。
\nCOPY node_modules ./\n
Run Code Online (Sandbox Code Playgroud)\n我提倡这样的事情。我的推理.. \xe2\x80\x99 本质上是互联网上每个人都说的做法,包括Node 文档和Docker 文档。我希望我是从技术角度争论的,但我似乎只能\xe2\x80\x99t 找到任何专门解决这个问题的东西。
\nCOPY package*.json ./\nRUN npm install\n
Run Code Online (Sandbox Code Playgroud)\n那么谁是对的呢?第一种选择有哪些缺点?
\n更新:
这是我从下面的答案中学到的……
SQLite 支持在列上定义默认值。但是,它不支持查询中任何形式的 DEFAULT 关键字或函数。因此,实际上,不可能执行 MySQL 风格的批量插入,其中在某些行中显式设置列,而在其他行中使用列默认值。
下面列出了几种创造性的解决方法,但为了简单起见,我最喜欢 Shawn 的建议,即每行使用 INSERT 语句,可能全部包含在 BEGIN TRANSACTION 语句中。只有这样您才能使用列默认值。
原问题:
我有一个todo
以此模式命名的简单 SQLite 表...
我可以使用以下语法将行插入到该表中...
INSERT INTO 'todo' ('title', 'complete', 'notes') VALUES
('Pickup dry cleaning', true, 'They close at 7pm'),
('Clean apartment', false, 'Floors have already been swept'),
('Finish homework', true, 'Chapters 3 and 4');
Run Code Online (Sandbox Code Playgroud)
然而,
我不知道如何省略某些值并让数据库使用该列的默认值。
例如,该complete
列的默认值为0
。如果能够undefined
作为查询中的值之一传递,那就太好了,从而向 SQLite 发出信号,表明我想使用列默认值,但当我Result: no such column: undefined
尝试这样做时,出现错误。
null
在这种情况下也不起作用,因为有时您希望将单元格的值显式设置为 null。您也不能简单地省略该值,因为参数是位置性的。
为什么ON DELETE SET NULL
通过应用程序代码删除行时失败,但手动执行 SQL 语句时却表现正常?
我有一个待办事项表和一个类别表。todo 表有一个在类别表中category_id
引用的外键,它是通过“ON DELETE SET NULL”操作创建的。id
create table `category` (
`id` integer not null primary key autoincrement,
`name` varchar(255) not null
);
Run Code Online (Sandbox Code Playgroud)
create table `todo` (
`id` integer not null primary key autoincrement,
`title` varchar(255) not null,
`complete` boolean not null default '0',
`category_id` integer,
foreign key(`category_id`) references `category`(`id`) on delete SET NULL on update CASCADE
);
Run Code Online (Sandbox Code Playgroud)
我的应用程序中还有一个端点,允许用户删除类别。
categoryRouter.delete('/:id', async (req, res) => {
const { id } = req.params …
Run Code Online (Sandbox Code Playgroud) 我正在努力在我的絮凝功能中找到错误.
该函数的目标是获取一个列表并将每组连续值组合成一个值.例如...
[1, 4, 4, 2, 0, 3, 3, 3] => [1, 4, 2, 0, 3]
现在的功能是......
def flocculate(array):
for index1, val1 in enumerate(array):
if val1 == 0 or not not val1:
new_array = array[index1+1:]
for index2, val2 in enumerate(new_array):
if array[index1] == val2:
array[index1 + index2 + 1] = False
else:
break
return [value for value in array if type(value) is not bool]
Run Code Online (Sandbox Code Playgroud)
但是,它似乎没有很好地处理零.
例如,下面显示的输入得到一些零正确,但是错过了其他一些......
[2, 4, 4, 0, 3, 7, 0, 2, 2, 2, 8, 0, 0, 0] …
以收集个人详细信息的 HTML 表单为例。
注意:代码片段经过简化,与屏幕截图不完全匹配。此外,代码片段是使用 Yup 编写的,这是一个与 Joi 非常相似的库,面向浏览器而不是 NodeJS。
为了提交表单,我想对地址字段进行验证并使它们成为必需,但前提是用户已部分填写了地址部分。总的来说,我想让地址详细信息可选。
这是我的 PersonSchema 的简化版本...
import { object, string, number } from 'yup'
const PersonSchema = object().shape({
name: string().required(),
age: number()
.positive()
.integer()
.required(),
address: AddressSchema
})
Run Code Online (Sandbox Code Playgroud)
以这种方式定义 AddressSchema 不起作用,因为这些字段始终是必需的...
const AddressSchema = object().shape({
street: string()
.min(2, 'Too Short!')
.max(50, 'Too Long!')
.required(),
city: string()
.min(2, 'Too Short!')
.max(50, 'Too Long!')
.required(),
state: string()
.min(2, 'Too Short!')
.max(50, 'Too Long!')
.required()
})
Run Code Online (Sandbox Code Playgroud)
这是我尝试使地址字段依赖于其他地址字段的存在,但这不起作用,因为您遇到循环依赖问题......
const AddressSchema = object().shape({
street: string()
.when(['city', 'state'], { …
Run Code Online (Sandbox Code Playgroud) 我很困惑终端选项卡中显示的数据是什么。第一部分epzio
显然是我的用户名。但第二部分,@C02S60BBG8WP
我不知道。
注意:我将 zsh 与 oh-my-zsh 结合用于我的 shell。
是否可以自定义选项卡标题中显示的内容?我想epzio@C02S60BBG8WP
完全删除该部分并仅显示当前工作目录。
另外,为什么我的标签标题无缘无故地变成蓝色?我认为只有当您有特定的进程(例如节点正在运行)时,才会发生这种情况。正如您在下面的屏幕截图中看到的,tic-tac-toe
即使该选项卡中没有发生任何事情,该选项卡也已变成蓝色。
更新:似乎解决方案可能涉及对 进行更改~/.oh-my-zsh/lib/termsupport.zsh
,但我不确定当 oh-my-zsh 更新自身时这些是否会被覆盖。
sql ×2
sqlite ×2
algorithm ×1
chunking ×1
default ×1
dependencies ×1
docker ×1
dockerfile ×1
express ×1
hyperterm ×1
javascript ×1
joi ×1
knex.js ×1
node-modules ×1
node.js ×1
objection.js ×1
oh-my-zsh ×1
openapi ×1
python ×1
schema ×1
swagger ×1
terminal ×1
unix ×1
validation ×1
yup ×1
zsh ×1