Ran*_*lue 81 javascript mongoose mongodb node.js
我试图使用Mongoose发送所有用户的列表,如下所示:
server.get('/usersList', function(req, res) {
var users = {};
User.find({}, function (err, user) {
users[user._id] = user;
});
res.send(users);
});
Run Code Online (Sandbox Code Playgroud)
当然,res.send(users);
要发送{}
,这不是我想要的.有没有一种find
语义略有不同的替代方案,我可以做以下事情?
server.get('/usersList', function(req, res) {
User.find({}, function (err, users) {
res.send(users);
});
});
Run Code Online (Sandbox Code Playgroud)
本质上,我希望只有在从数据库中提取所有用户时才执行回调.
sou*_*eck 148
好吧,如果你真的想从返回映射_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);
});
});
Run Code Online (Sandbox Code Playgroud)
find()
返回数组中的所有匹配文档,因此您的最后一个代码剪切将该数组发送到客户端.
bst*_*ory 12
如果您想将数据发送到视图,请传递以下内容.
server.get('/usersList', function(req, res) {
User.find({}, function(err, users) {
res.render('/usersList', {users: users});
});
});
Run Code Online (Sandbox Code Playgroud)
在视图中,您可以使用变量用户循环访问数据
这只是对@soulcheck答案的改进,并解决了forEach中的拼写错误(缺少结束括号);
server.get('/usersList', (req, res) =>
User.find({}, (err, users) =>
res.send(users.reduce((userMap, item) => {
userMap[item.id] = item
return userMap
}, {}));
);
);
Run Code Online (Sandbox Code Playgroud)
干杯!
有一种非常简单的方法可以列出您的数据:
server.get('/userlist' , function (req , res) {
User.find({}).then(function (users) {
res.send(users);
});
});
Run Code Online (Sandbox Code Playgroud)
使用 async 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);
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
163719 次 |
最近记录: |