몽구스 findOne 사용법
아래 스키마를 가지고 있습니다(커피스크립트에 있는 것에 대해 사과드립니다).
Schema = mongoose.Schema
AuthS = new Schema
auth: {type: String, unique: true}
nick: String
time: Date
Auth = mongoose.model 'Auth', AuthS
데이터베이스에 확실히 있는 레코드를 하나만 복구하고 싶습니다.
Auth.findOne({nick: 'noname'}, function(obj) { console.log(obj); });
불행히도 이것은 항상 기록됩니다.null
.db.auths.findOne({nick: 'noname'})
in mongo shell은 항상 값을 반환합니다.무슨 일입니까?
문제 발견, 사용 필요function(err,obj)
대신:
Auth.findOne({nick: 'noname'}, function(err,obj) { console.log(obj); });
Mongoose는 기본적으로 mongodb의 api를 감싸 유사 관계형 dbapi를 제공하므로 쿼리가 mongodb 쿼리와 정확하게 같지 않습니다.Mongoose findOne 쿼리는 문서가 아닌 쿼리 개체를 반환합니다.솔루션이 제안하는 대로 콜백을 사용하거나 v4+의 findOne에서 테이블을 반환하여 .then 또는 wait/async를 사용하여 문서를 검색할 수 있습니다.
// thenables
Auth.findOne({nick: 'noname'}).then(err, result) {console.log(result)};
Auth.findOne({nick: 'noname'}).then(function (doc) {console.log(doc)});
// To use a full fledge promise you will need to use .exec()
var auth = Auth.findOne({nick: 'noname'}).exec();
auth.then(function (doc) {console.log(doc)});
// async/await
async function async auth() {
const doc = await Auth.findOne({nick: 'noname'}).exec();
return doc;
}
auth();
타사 약속 라이브러리를 사용하려면 문서를 참조하십시오.
같은 오류가 발생한 경우, 저는 Asianc / Waiting 기능을 사용하고 있습니다. 이것은 findOne에 WAITE를 추가해야 하기 때문입니다.
Ex:const foundUser = User.findOne ({ "email" : req.body.email });
위에서 foundUser는 findOne을 완료하기 전에 값을 반환하기 때문에 항상 사용자가 찾거나 그렇지 않은 경우 모두 Object 값을 항상 포함합니다.
const foundUser = await User.findOne ({ "email" : req.body.email });
위에서 foundUser가 제공된 조건의 컬렉션에 사용자가 없으면 null을 반환합니다. 사용자가 발견되면 사용자 문서를 반환합니다.
사용하는 것을 고려해 보는 것이 좋습니다.console.log
내장된 "임의" 개체를 사용하는 경우:
console.log(arguments); // would have shown you [0] null, [1] yourResult
이렇게 하면 아무리 많은 인수가 있더라도 항상 모든 인수가 출력됩니다.
obj[0]nick을 사용하면 원하는 결과를 얻을 수 있습니다.
언급URL : https://stackoverflow.com/questions/7033331/how-to-use-mongoose-findone
'programing' 카테고리의 다른 글
"위드..."와 동등함C#의 "끝"? (0) | 2023.05.16 |
---|---|
Process.start: 출력을 얻는 방법은 무엇입니까? (0) | 2023.05.16 |
이전 지점에서 체크아웃할 수 있는 방법이 있습니까? (0) | 2023.05.16 |
기본 UIButton을 프로그래밍 방식으로 만들려면 어떻게 해야 합니까? (0) | 2023.05.16 |
SQL 선택 조인: 모든 열 앞에 '접두사'로 접두사를 지정할 수 있습니다.*'? (0) | 2023.05.16 |