我正在运行一个express.js应用程序,它有一些api向下拉框提供数据.返回的数据采用以下形式:
[
{
key: 'blah',
value: 'Blah Blah'
},
{
key: 'foo',
value: 'Foos'
},
{
key: 'bar',
value: 'Bars'
},
{
key: 'baz',
value: 'Bazingo'
}
];
Run Code Online (Sandbox Code Playgroud)
其中key是我的选项键,value是显示文本.这个数组的结构是固定的,我知道一个事实,我将始终拥有键和值作为数组中每个对象的字段.
当我尝试验证提交的表单(额外的服务器端验证)时,我想交叉引用为字段提供的值与数组中的"key"的所有值(blah,foo,bar,baz).鉴于这将是一个经常使用的路由,我想避免迭代遍历数组,以便每次都找到允许的值.有更简单的方法吗?换句话说,我知道我可以使用:
permittedValues = [];
for (i = 0; i < array.length; i++){
permittedValues[i] = array[i]["key"];
}
Run Code Online (Sandbox Code Playgroud)
但如果可能的话,我想避免这种情况.
PS:这似乎是一个基本问题,我在网上找到的答案并没有完全回答我的问题.所以,如果已经被要求和回答,请道歉.
我是CodeIgniter的新手,但我过去开发了一些工作页面.我正在尝试重构这些页面(旧页面仍在Postgres上的Linux框中运行)并在Windows框中进行开发; 但我遇到了Postgres数据库连接问题,我收到以下错误:
发生数据库错误
无法使用提供的设置连接到数据库服务器.
文件名:C:\ Subayogam_v2.0\Codeigniter\system\database\DB_driver.php
行号:124
我知道当数据库配置丢失时会出现此错误,但我确实在C:\ Subayogam_v2.0\Codeigniter\application\config\database.php中有一个有效的数据库配置.以下是配置文件数据:
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'postgres';
$db['default']['password'] = 'mypassword';
$db['default']['database'] = 'subayogam_v2.0';
$db['default']['dbdriver'] = 'postgre';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = TRUE;
/*$db['default']['cachedir'] = '/var/subayogam_2.0/cache';*/
$db['default']['cachedir'] = 'C:\Subayogam_v2.0\Codeigniter\cache';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
Run Code Online (Sandbox Code Playgroud)
我仔细检查了缓存文件夹路径,并尝试了一个连接到同一个数据库的简单PHP页面,看看驱动程序是否正常工作,我能够从数据库中看到结果.Apache错误日志中也没有有用的错误消息.我从正在运行的版本中复制粘贴了整个应用程序,并修改了DB文件以指向新数据库.没有其他改变.
可能有什么不对?是否有任何特定的日志文件可以提供有关错误的更多信息?
当我定义一个返回Type类的方法时,我不能用任何扩展Base的类型覆盖该方法吗?请看以下示例:
MultiEntryModel.java(父类)
protected abstract <T extends Model> List<T> getDataList();
Run Code Online (Sandbox Code Playgroud)
ProgramData.java
public class ProgramData extends MultiEntryModel {
...
@Override
protected List<Program> getDataList() {
return programs;
}
}
Run Code Online (Sandbox Code Playgroud)
Program.java
public class Program extends Model {
...
}
Run Code Online (Sandbox Code Playgroud)
我在Programs.java中收到一个不安全的类型转换警告,即使我正在返回一个包含类型为Program的对象的List,它扩展了Model类,正如基类中的方法签名所示<T extends Model>.为什么?
我的应用程序并行处理一堆文件,因为每个文件都有文件作为其名称的一部分被删除的日期,我使用以下方法来提取删除日期:
public static Optional<Date> getFileDropDate(String filename) {
/* Example: my_file-1_20171002.xml */
if (StringUtils.isEmpty(filename) || !filename.matches(Constants.FILE_DATE_PATTERN)) {
return Optional.empty();
}
String[] segments = filename.split(UNDERSCORE);
try {
// Filename definitely ends with _yyyyMMdd.xml as it matches the pattern. Split by underscore, get the last segment and take out the .xml
return Optional.of(yyyymmdd.parse(segments[segments.length - 1].replace(Constants.XML_EXTENSION, "")));
} catch (ParseException e) {
logger.error("Unable to parse filename to find load date");
return Optional.empty();
}
}
Run Code Online (Sandbox Code Playgroud)
虽然功能非常可靠并且我的测试都是成功的,但是当我在多线程设置中运行它时,它会因日期解析异常而失败,并且该方法尝试解析的字符串非常奇怪.
例如:
java.lang.NumberFormatException: For input string: "E.21616"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at …Run Code Online (Sandbox Code Playgroud) java ×2
codeigniter ×1
express ×1
generics ×1
javascript ×1
json ×1
node.js ×1
php ×1
postgresql ×1
types ×1