NodeJS MongoDB:类型号不能保存为数组

时间:2018-03-20 19:00:55

标签: node.js mongodb mongoose

我有多个带数字的输入,所以我需要一个如下所示的输出: [1,1,1,1,1]但不是这样,而是在控制台日志中输出:[" 1"," 1"," 1", " 1"," 1"]以及像这样的mongodb:[" 1,1,1,1,1"]。

在模型中,如果我设置为这样:

numbers: {
    type: Number,
    required: true
}

这是我用mongob和mongoose的代码:

router.post('/', (req, res)=>{
    const newResult = Result({
      numbers: req.body.numbers
    });

    newResult.save()
        .then(savedResult=>{
            ElectoralUnit.find({})
                .then(electoralUnits=>{
                    res.redirect('/results');
                });
         });
});

我收到以下错误:

error: (node:5696) UnhandledPromiseRejectionWarning: ValidationError: StateResult 
validation failed: numbers: Cast to Number failed for value "[ '1', '1', '1', '1', '1' ]" 
at path "numbers"

我试图放type: [Number]但没有运气。

但如果我设置为String而不是number,那么mongodb中没有错误但是字符串而不是整数。如何将数组设置为整数?

1 个答案:

答案 0 :(得分:1)

由于您正在尝试存储Numbers数组,并且由于Mongoose会将类似数字的字符串转换为JavaScript Numbers,因此您需要确保实际存储数字数组并定义您的Scheme-输入

<?php
    add_action( 'wp_enqueue_scripts', 'lahree-global-assets' );
    function wlnb_wp_enqueue_scripts(){
        wp_enqueue_style( 'lahree-global', WPMU_PLUGIN_DIR. '/lahree.css' );

        if( site_url() == 'SPECIFIC_SITE_URL_1' )
            wp_enqueue_style( 'lahree-site-1', WPMU_PLUGIN_DIR. '/lahree-1.css' );

        if( site_url() == 'SPECIFIC_SITE_URL_2' )
            wp_enqueue_style( 'lahree-site-2', WPMU_PLUGIN_DIR. '/lahree-2.css' );      
    }

    add_action( 'wp_head', 'do_something' );
    function do_something(){
        if( site_url() == 'SPECIFIC_SITE_URL_3')
            echo 'This is the Third Site';

        if( site_url() == 'SPECIFIC_SITE_URL_4')
            echo 'This is the Fourth Site';
    }

确保验证前端和后端的输入。要避免使用numbers: { type: [Number], required: true } ,请务必在UnhandledPromiseRejectionWarning功能中添加.catch()并将相应的响应发送到您的前端。