我必须使用 Joi 验证库来验证 API 输入,然后发送输出。
我说过创建了一个架构如下:
import Joi from '@hapi/joi'
const eventSchema = Joi.object({
title: Joi.string()
.min(7)
.max(50)
.required()
.error(() => Error('Event title has to be least 7 and max 50 characters.')),
description: Joi.string()
.min(10)
.max(400)
.required()
.error(() => Error('Event description has to be least 10 and max 400 characters.')),
place: Joi.string()
.min(6)
.max(40)
.required()
.error(() => Error('Event place has to be least 6 and max 40 characters.'))
})
export default eventSchema
Run Code Online (Sandbox Code Playgroud)
当我验证这一点时,我收到了预期的验证错误。这里的问题是我不知道哪个字段真正导致了错误。我想知道这一点,因为我想准确地在导致错误的字段旁边显示错误,而不是仅在表单顶部显示通用验证消息。
const isValid = eventSchema.validate()
if (isValid.error) { …Run Code Online (Sandbox Code Playgroud) 简短问题
我正在寻找某种方法来告诉 Webpack,不要对process变量执行任何操作,只需像任何其他全局变量一样对待(因此它引用客户端捆绑包中的 window.process )。如果不可能,那么可以process.env在客户端运行时在 Webpack 中注入变量。
长解释
目前,我使用 Webpack 来打包我的 React (SSR) 应用程序。我有 5 个环境,例如 dev1、dev2...登台和生产。我想重复使用相同的构建并保持可配置性,例如每个环境上的 Google Analytics ID 是不同的。
后端 Dot ENV 模块完成这项工作。我可以将所有常量定义为文件KEY=value中的对.env,并在运行时加载它们并process.env.KEY在代码中使用。
我试图为前端(或共享文件)复制相同的行为。假设我有一个baseService.js拨打电话的电话fetch。它也可以从节点+客户端使用。它使用诸如 之类的变量process.env.HOST。到目前为止,我一直在为每个环境创建单独的构建,因此使用webpack.DefinePlugin插件在 Webpack 中定义了它,以便能够在客户端捆绑包上使用它。
现在,当我想重新使用构建时,我捕获所有常量,通过process.env将它们与(它将匹配 PUBLIC_KEY)进行匹配来查看它们是否可以在客户端使用PUBLIC_(.*),如果是,则将其打包到数组中并添加到主 html 文件中对象如下图所示:-
window.process = {ENV: { PUBLIC_GA_ID: '1235', PUBLIC_FOO: 'bar' }}
Run Code Online (Sandbox Code Playgroud)
当我使用 webpack 捆绑我的客户端时,执行process.env.PUBLIC_GA_ID是未定义的(尽管它在 head html 中作为全局window.process变量)。这是因为 webpack 仍然从 Node 向前端注入进程变量,前端的env对象为空白 …
我想解析一个包含if语句并评估其输出的字符串.
我可以得到评估部分,但其他人对我来说太复杂了.
请看以下示例:
if $a == 10 && ($b == '5' || $c == 'test')if $x != 10 || $y == falseif $z < 10我想让它们在数组中 - 也就是说,我想要的相应示例的输出将是:
[ [ '$a', '==', '10' ], '&&', [ [ '$b', '==', '5' ], '||', [ '$c', '==', 'test' ] ] ][ [ '$x', '!=', '10' ], '||', [ '$y', '==', 'false' ] ][ '$z', '<', '10' ]我想我要求太多的逻辑/代码,但如果有人能帮助我,这将是很好的.使用正则表达式或正常的字符串解析是可以的.
我的文件在顶部有评论.
例如
/**
* Comments for file.
*
*/
Run Code Online (Sandbox Code Playgroud)
使用PHP,我使用file_get_contents将文件内容读入变量现在我想在注释中获得值.对于上面的例子,预期结果将是
* Comments for file
*
*
Run Code Online (Sandbox Code Playgroud)
这意味着我想要内容/**和*/.这个文件可以有多个注释,但我想要第一个位于文件顶部的文件.
有什么想法/帮助吗?
更新: - 这是普通的文本文件.不是PHP文件.
我想要获取主机名 www.example.com 的 MX 记录。节点有它的功能。
dns.resolveMx(domain, callback)
Run Code Online (Sandbox Code Playgroud)
但我不想要那个回调的东西。我想要同步通话之类的东西。例如
var records = dns.resolveMx(domain);
Run Code Online (Sandbox Code Playgroud)
这可能吗 ?
(注意:- 我在 Node 文档中找到了该函数。链接:- http://nodejs.org/api/dns.html)