몽구스:전체 사용자 목록 가져오기
Mongoose를 사용하여 다음과 같이 모든 사용자의 목록을 보내려고 했습니다.
server.get('/usersList', function(req, res) {
var users = {};
User.find({}, function (err, user) {
users[user._id] = user;
});
res.send(users);
});
물론이야.res.send(users);
송신할 예정입니다.{}
그건 내가 원하는 게 아니야이 있나요?find
의미론이 약간 다른 대안으로, 내가 다음을 할 수 있는 곳?
server.get('/usersList', function(req, res) {
User.find({}, function (err, users) {
res.send(users);
});
});
기본적으로 모든 사용자를 데이터베이스에서 가져온 경우에만 콜백을 실행합니다.
음, 만약 당신이 정말로 지도를 돌려주고 싶다면_id
로.user
다음과 같은 작업을 언제든지 수행할 수 있습니다.
server.get('/usersList', function(req, res) {
User.find({}, function(err, users) {
var userMap = {};
users.forEach(function(user) {
userMap[user._id] = user;
});
res.send(userMap);
});
});
find()
는 배열 내의 일치하는 모든 문서를 반환하므로 마지막으로 캡처한 코드가 해당 배열을 클라이언트에 전송합니다.
데이터를 뷰로 보내려면 다음 사항을 전달하십시오.
server.get('/usersList', function(req, res) {
User.find({}, function(err, users) {
res.render('/usersList', {users: users});
});
});
뷰 내에서 가변 사용자를 사용하여 데이터를 루프할 수 있습니다.
데이터를 나열하는 매우 쉬운 방법이 있었습니다.
server.get('/userlist' , function (req , res) {
User.find({}).then(function (users) {
res.send(users);
});
});
이는 @soulcheck의 답변 개선과 각 오타 수정(마감 괄호 누락)일 뿐입니다.
server.get('/usersList', (req, res) =>
User.find({}, (err, users) =>
res.send(users.reduce((userMap, item) => {
userMap[item.id] = item
return userMap
}, {}));
);
);
건배!
비동기 wait 및 arrow 기능에서도 동일한 작업을 수행할 수 있습니다.
server.get('/usersList', async (req, res) => {
const users = await User.find({});
const userMap = {};
users.forEach((user) => {
userMap[user._id] = user;
});
res.send(userMap);
});
하고 싶은 경우list all documents in Mongoose collection
끝나고update
또는delete
다음과 같이 함수를 편집할 수 있습니다.
exports.product_update = function (req, res, next) {
Product.findByIdAndUpdate(req.params.id, {$set: req.body}, function (err, product) {
if (err) return next(err);
Product.find({}).then(function (products) {
res.send(products);
});
//res.send('Product udpated.');
});
};
이 방법은list all documents
뿐만 아니라 성공으로showing success message
목록 가져오기를 대기하도록 함수를 설정합니다.
getArrayOfData() {
return DataModel.find({}).then(function (storedDataArray) {
return storedDataArray;
}).catch(function(err){
if (err) {
throw new Error(err.message);
}
});
}
마이솔루션
User.find()
.exec()
.then(users => {
const response = {
count: users.length,
users: users.map(user => {
return {
_id: user._id,
// other property
}
})
};
res.status(200).json(response);
}).catch(err => {
console.log(err);
res.status(500).json({
success: false
})
})
이거 드셔보세요.
User.find().exec(function(err, users){
console.log('users : ', users);
console.log('err', err);
return res.send(users);
});
콜백 메서드는 쿼리가 실행된 후에만 실행됩니다.
app.get('/api/users', (req,res) => {
User.find({}, (err, users) => err ? console.log(err) : res.json(users));
});
exports.getAllUsers = ( req , res )= > {
User.find().exec((err,users)=>{
if(err || !users){
return res.status(400).json({error:"No users found"})
}
return res.status(200).json(users)
})
}
비동기 함수로 모든 사용자를 취득할 수도 있습니다.
await User.find({},(err,users)=>{
if (err){
return res.status(422).send(err)
}
if (!users){
return res.status(422).send({error:"No data in the collection"})
}
res.send({Allusers:users})
})
언급URL : https://stackoverflow.com/questions/14103615/mongoose-get-full-list-of-users
'programing' 카테고리의 다른 글
컴포넌트에 대한 React onClick 이벤트 (0) | 2023.03.12 |
---|---|
HTTP 전용 쿠키 내에 JWT 토큰을 저장하는 방법 (0) | 2023.03.07 |
(각의 라우터)해결 프로세스 중 애니메이션 로드 표시 (0) | 2023.03.07 |
@Transactional with JPA and Hibernate의 사용법은 무엇입니까? (0) | 2023.03.07 |
권장 스케일러블 각도JS 프로젝트 구조? (0) | 2023.03.07 |