Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法使用Angular将formdata发送到节点服务器_Javascript_Angular_Typescript_Express_Multipartform Data - Fatal编程技术网

Javascript 无法使用Angular将formdata发送到节点服务器

Javascript 无法使用Angular将formdata发送到节点服务器,javascript,angular,typescript,express,multipartform-data,Javascript,Angular,Typescript,Express,Multipartform Data,在应用验证后,我尝试在angular中创建一个注册页面,并将其发送到服务器并保存到mongodb中 我试过这样做 register_user() { const data = this.register_form.getRawValue(); const formData: FormData = new FormData(); formData.append('name', data.name); formData.append('email', data

在应用验证后,我尝试在angular中创建一个注册页面,并将其发送到服务器并保存到mongodb中

我试过这样做

  register_user() {
    const data = this.register_form.getRawValue();

    const formData: FormData = new FormData();

    formData.append('name', data.name);
    formData.append('email', data.email);
    formData.append('password', data.password);
    // formData.append('image', this.image);
    formData.append('gender', 'Male');

    formData.forEach((value, key) => {
      console.log(value);
    });

    this.user_service.create_user(formData).subscribe((res) => {
      console.log(res);
    });
  }
服务

  create_user(data: FormData) {
    return this.http.post(`${environment.BASE_URL}/user/create-user`, data, {
      headers: { 'Content-Type': 'multipart/form-data' },
    });
  }

节点服务器

// required Route
const User = require('./Routes/user');

// Using middle ware
app.use(cors());
app.use(
  express.urlencoded({
    extended: true,
  })
);
app.use(express.json());

app.use('/user', User);

app.listen(PORT, () => console.log(`App started on http://localhost:${PORT}`));
在请求主体中的服务器上,我得到的是空对象{}

但我尝试发送普通Js对象,它工作正常。

我怎样才能解决这个问题?formdata是否需要在app.module.ts中安装或导入任何其他模块?

您应该使用。这是接收发送到后端的FormData数据最方便的方法

const multiparty = require('multiparty');

router.post('/create-user', async (req, res) => {
    const form = new multiparty.Form();

    // catch formData event
    form.parse(req, (err, fields, files) => {
        let {name, email, gender, mobile_no, password} = fields;
        try {
            if (
                !(name && email && gender && mobile_no && password && password.length > 8)
            ) {
                throw new Error(
                    `All fields are required name: ${name} , email: ${email} , gender: ${gender} , MobileNo: ${mobile_no} .Password length must be greater then 8 character`
                );
            }
            password = bcrypt.hashSync(password, parseInt(process.env.BCRYPT_SALT));

            // let response = await USER.create({ name, email, gender, mobile_no });
            const token = await jwt.sign(
                {name, email, mobile_no, user_id: response._id},
                process.env.JWT_KEY
            );

            response = response.toObject();
            response['token'] = token;

            res.status(200).json({err: 0, message: 'User Created', response});
        } catch (error) {
            res.status(404).json({err: 1, message: error.message, error});
        }
    });
});
const multiparty = require('multiparty');

router.post('/create-user', async (req, res) => {
    const form = new multiparty.Form();

    // catch formData event
    form.parse(req, (err, fields, files) => {
        let {name, email, gender, mobile_no, password} = fields;
        try {
            if (
                !(name && email && gender && mobile_no && password && password.length > 8)
            ) {
                throw new Error(
                    `All fields are required name: ${name} , email: ${email} , gender: ${gender} , MobileNo: ${mobile_no} .Password length must be greater then 8 character`
                );
            }
            password = bcrypt.hashSync(password, parseInt(process.env.BCRYPT_SALT));

            // let response = await USER.create({ name, email, gender, mobile_no });
            const token = await jwt.sign(
                {name, email, mobile_no, user_id: response._id},
                process.env.JWT_KEY
            );

            response = response.toObject();
            response['token'] = token;

            res.status(200).json({err: 0, message: 'User Created', response});
        } catch (error) {
            res.status(404).json({err: 1, message: error.message, error});
        }
    });
});