【发布时间】:2020-04-21 08:56:32
【问题描述】:
大家好,我正在尝试将我收集的所有数据从 mongodb 聚合到 node.js 代码。让我分享我的数据库截图和我的 node.js 代码。 我的数据库:
这是我的代码:
let app = require("express")();
let http = require("http").Server(app);
let io = require("socket.io")(http);
let mongoose = require('mongoose');
let ObjectID = require("mongodb").ObjectID;
mongoose.connect('mongodb://localhost:27017/AuctionHouses', (err) => {
if(err){
console.log("error" + err);
} else{
console.log("mongodb connected");
}
})
let schema = mongoose.Schema;
let Auction = new schema({
auctions:{
bids:{
name:String,
bid:Number,
bidDate:Date
},
deadLine:Date
}
})
const id = mongoose.Types.ObjectId("5e0e21c4daa2b01e34ef6dc1");
let clients = [];
let bidModel = mongoose.model('auction', Auction);
//let ObjectId = mongoose.Types.ObjectId;
io.on("connection", socket =>{
console.log("User connected");
clients.push(socket.id);
if(clients != []){
for(let i = 0; i< clients.length; i++){
if(io.sockets.connected[clients[i]] != undefined){
io.sockets.connected[clients[i]].emit("user", "User" + (i + 1));
}
}
}
socket.on("disconnect", function() {
console.log("user disconnected");
io.emit("user", "User" + Object.keys(io.sockets.connected).length);
});
socket.on("find", function(msg){
bidModel.aggregate([
{ $unwind: '$bids'},
{ $sort: {
"bids.bid" : -1
}},
{ $limit : 2}
], function(err,msg){
if(err){
console.log(err);
} else{
io.emit("found", msg);
console.log(msg);
}
})
})
})
http.listen(5000, () => {
console.log("started on port 5000");
});
我也使用了套接字,但套接字工作得很好。所以你可以检查 bidModel.aggregate 部分。有一个错误,但我找不到它是什么。我也不确定模式或模型。
【问题讨论】:
-
不确定为什么需要使用套接字,请尝试我的回答。同样在这里
let ObjectID = require("mongodb").ObjectID;,您可以将其更改为let ObjectId = require("mongodb").ObjectID;以使const id = mongoose.Types.ObjectId("5e0e21c4daa2b01e34ef6dc1");工作
标签: node.js mongodb mongoose nosql mongoose-schema