无法在mongoDB中按ID删除或查找记录

时间:2019-06-12 13:12:12

标签: spring mongodb rest angular6 mongorepository

我将客户记录保存在Mongo DB中,我使用Angular 6作为前端。 保存时,我没有发送ID值,因此Mongo自动创建ID并保存记录。

我正在Java中使用MongoRepository进行保存。但是在执行“ deleteById”或“ findById”时,它无法搜索或删除这些记录。

可以帮忙吗?

有角度的客户模型


export interface Customer {
    id : string,
    custId : number,
    customerName : string,
    email: string,
    phone : string,
    age: number,
    city : string,
    state : string,
    createdDate : Date
}

User.service.ts


deleteCustomerData(id): Observable<Customer>{
    console.log(this.deleteCustomerUrl  + id);
    return this.http.delete<Customer>(this.deleteCustomerUrl + id);
  }

Java控制器


@DeleteMapping("/deleteCustomer/{id}")
    public String deleteCustomerById(@PathVariable String id) {
        //ObjectId objId = new ObjectId(id);
        customerService.deleteCustomerById(id);
        return "deleted customer by id"+ id;
    }

Java服务


public void deleteCustomerById(String id) {
        customerRepository.deleteById(id);
    }

Java模型


@Document(collection="Customer")
public class Customer {

    @Id

    private String Id;

    private String customerName;
    private int age;
    private String city;
    private String state;
    private int custId;

}

Java存储库


package com.tivo.extract.config.repository;

import org.springframework.data.mongodb.repository.MongoRepository;

import com.tivo.extract.config.model.Customer;

public interface CustomerRepository extends MongoRepository<Customer, String>{

}

1 个答案:

答案 0 :(得分:0)

问题是主字段的数据类型需要从String更改为ObjectId。 默认情况下,Mongo db使用ObjecId作为主键类型。