小编use*_*030的帖子

从数组中的所有对象获取特定键的值

我正在运行一个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:这似乎是一个基本问题,我在网上找到的答案并没有完全回答我的问题.所以,如果已经被要求和回答,请道歉.

javascript json node.js express

15
推荐指数
5
解决办法
4万
查看次数

PHP - Codeigniter - 连接到PostgreSQL失败

我是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文件以指向新数据库.没有其他改变.

可能有什么不对?是否有任何特定的日志文件可以提供有关错误的更多信息?

php postgresql codeigniter

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

返回集合的通用方法,给出不安全的类型转换警告

当我定义一个返回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>.为什么?

java generics types

0
推荐指数
1
解决办法
54
查看次数

Java - 线程安全的静态方法

我的应用程序并行处理一堆文件,因为每个文件都有文件作为其名称的一部分被删除的日期,我使用以下方法来提取删除日期:

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 multithreading

0
推荐指数
1
解决办法
223
查看次数