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});
});
});
보기 내에서 사용자 변수를 사용하여 데이터를 반복 할 수 있습니다.
답변
이것은 @soulcheck의 답변의 개선 사항이며 forEach (닫는 대괄호 누락)의 오타를 수정했습니다.
server.get('/usersList', (req, res) =>
User.find({}, (err, users) =>
res.send(users.reduce((userMap, item) => {
userMap[item.id] = item
return userMap
}, {}));
);
);
건배!
답변
데이터를 나열하는 매우 쉬운 방법이 있습니다.
server.get('/userlist' , function (req , res) {
User.find({}).then(function (users) {
res.send(users);
});
});
답변
비동기 대기 및 화살표 기능으로도 동일하게 수행 할 수 있습니다.
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);
}
});
}