【问题标题】:BSONTypeError: Argument passed in must be a string of 12 bytes or a string of 24 hex characters or an integerBSONTypeError: 传入的参数必须是 12 个字节的字符串或 24 个十六进制字符的字符串或整数
【发布时间】:2023-02-09 02:14:30
【问题描述】:

我使用 mern stack 构建了一个 crud 应用程序。然后我尝试了应用程序的搜索操作,但它显示了这个错误:

BSONTypeError: 传入的参数必须是 12 个字节的字符串或 24 个十六进制字符的字符串或整数

这是我的客户端代码:

搜索.js

import React from 'react';

const Search = () => {

    const searchHandle = e => {
        e.preventDefault();

        const userName = e.target.search.value;
        fetch(`http://localhost:5000/user/${userName}`)
        .then(res => res.json())
        .then(data => console.log(data))
        .catch(err => console.log(err));

        console.log(typeof(userName));
    }

    return (
        <div className='px-3 py-2 w-3/4'>
            <h1 className='text-3xl font-bold mb-3'>Search User:</h1>
            <form onSubmit={searchHandle}>
                <input className='bg-gray-200 rounded p-2 w-3/4' type="search" name="search" id="name" />
                <button className='bg-blue-500 mx-2 py-2 px-4 rounded' type='submit'>Search</button>
            </form>
        </div>
    );
}

export default Search;

这是我的服务器端代码:

app.get('/user/:name', (req, res) => {
            const searchName = req.params.name;
            console.log(searchName);
        })

请帮助解决此错误。

【问题讨论】:

    标签: javascript node.js reactjs express mern


    【解决方案1】:

    错误消息“BSONTypeError: Argument passed in must be a string of 12 bytes or a string of 24 hex characters or an integer”表明您向 MongoDB 数据库传递的值不是字符串,而是 24 个十六进制字符的字符串, 或一个整数。在 MongoDB 中,_id 字段必须是一个 12 字节的唯一标识符,表示为一个 24 位的十六进制字符串。您在 /user/:name 端点中传递的值似乎不是字符串、24 个十六进制字符串或整数。

    要修复此错误,您需要确保作为 _id 字段传递给 MongoDB 数据库的值是字符串、24 个十六进制字符串或整数。在您的代码中,您可以使用 typeof 运算符检查 searchName 变量的类型,如果它不是字符串,您可以在将其传递给数据库之前将其转换为字符串。

    这是一个例子:

    app.get('/user/:name', (req, res) => {
    const searchName = req.params.name;
    console.log(searchName);
    
    if (typeof searchName !== 'string') {
        searchName = searchName.toString();
    }
    // Pass the searchName to the MongoDB database
    })
    

    【讨论】:

      猜你喜欢
      • 2022-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-11
      • 1970-01-01
      • 2020-05-27
      相关资源
      最近更新 更多