我有一个Spring Boot应用程序连接到本地mongoDB数据库。当我试图从集合中获取所有记录时,它返回一个空数组。在输出中,它表示已连接到端口27017。它在运行应用程序时不会给我任何错误,但在我键入时只返回一个空数组http://localhost:8080/courses/我错过了什么?
模范班
package SpringBoot.Training.Management.Tool.SpringBootTMTCourses.Model;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
public class Courses {
@Id
public ObjectId _id;
public String courseID;
public String courseName;
public Courses(ObjectId _id, String courseID, String courseName) {
super();
this._id = _id;
this.courseID = courseID;
this.courseName = courseName;
}
public String get_id() {
return _id.toHexString();
}
public void set_id(ObjectId _id) {
this._id = _id;
}
public String getCourseID() {
return courseID;
}
public void setCourseID(String courseID) {
this.courseID = courseID;
}
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
}
控制器类
package SpringBoot.Training.Management.Tool.SpringBootTMTCourses.Controller;
import java.util.List;
import org.bson.types.ObjectId;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import SpringBoot.Training.Management.Tool.SpringBootTMTCourses.Model.Courses;
import SpringBoot.Training.Management.Tool.SpringBootTMTCourses.Repository.CoursesRepository;
@RestController
@RequestMapping("/courses")
public class CourseController {
@Autowired
private CoursesRepository repository;
@RequestMapping(value = "/", method = RequestMethod.GET)
public List<Courses> getAllCourses() {
return repository.findAll();
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public Courses getPetById(@PathVariable("id") ObjectId id) {
return repository.findBy_id(id);
}
}
存储库类
package SpringBoot.Training.Management.Tool.SpringBootTMTCourses.Repository;
import org.bson.types.ObjectId;
import org.springframework.data.mongodb.repository.MongoRepository;
import SpringBoot.Training.Management.Tool.SpringBootTMTCourses.Model.Courses;
public interface CoursesRepository extends MongoRepository<Courses, String> {
Courses findBy_id(ObjectId _id);
}
MongoDb输出
db.Courses.find().pretty()
{
"_id" : ObjectId("5d29c3a58212eda90db024c4"),
"courseID" : "1",
"courseName" : "C#"
}
{
"_id" : ObjectId("5d29c3a58212eda90db024c5"),
"courseID" : "2",
"courseName" : "Java"
}
{
"_id" : ObjectId("5d29c3a58212eda90db024c6"),
"courseID" : "3",
"courseName" : "JavaScript"
}
出现这个问题的原因是,模型类中没有明确给出集合名称,因此spring data将集合名称从类名(Courses
)派生为驼峰大小写(Courses
)。由于您的实际收藏名为课程
,因此未找到任何结果。
你必须要么:
>
课程
。或像这样用正确的集合名称注释模型类:
@Document(collection=“Courses”)
公共类课程{
我和我的同事有一个bug,这是由于我们假设调用的空流将返回。 当然,这是我们假设而不阅读文档的错误。但我不理解的是,为什么空流的默认行为返回。这样做的理由是什么?与(相反返回false)一样,该操作以命令方式使用,脱离单子,可能用于语句。考虑到这些事实,是否有任何理由让空流上的默认为对于大多数用途是可取的?
(免责声明:人们通过facebook、firebase等请求询问使用异步操作时数据为空/不正确时,会产生很多问题。我提出这个问题的目的是为每个从android异步操作开始的人提供一个简单的答案。) 我试图从我的一个操作中获取数据,当我使用断点或日志调试它时,值就在那里,但当我运行它时,它们总是空的,我该如何解决这个问题呢? 火力基地 脸书 等。
问题内容: 我和我的同事有一个错误,这是由于我们假设会返回空流调用而导致的。 当然,假定和不阅读文档是我们的错。但是我不明白的是为什么空流的默认行为会返回。这是什么原因呢?像(相反地返回false)一样,此操作以命令式方式使用,它离开了monad,并且可能在语句中使用了。考虑到这些事实,是否有任何理由使大多数用途都需要默认为空流? 问题答案: 这就是所谓的虚无事实。空集合的所有成员都满足您的条件;
我有点困惑php函数布尔瓦尔是如何工作的。考虑以下几点
通过下面的代码片段,我试图运行一个查询,该查询更新数据或将新数据插入名为的表中。该表包含一个名为和的列。如果中已经有一个节点,则更新中以毫秒为单位的时间。否则,将插入新的信息。 问题是,下面的代码片段无法将数据插入到数据库的表中。原因是声明: 那么应该如何编辑代码,以便更新重复值并插入新值呢?
问题内容: 在空字符串上分割将返回大小为1的数组: 考虑这返回空数组: 请解释 :) 问题答案: 出于同样的原因 和 将返回一个大小为2的数组。将第一个匹配之前的所有内容作为第一个元素返回。