我尝试了很多方法,但是没有用,我想从数据库中获取帖子,因此当用户向帖子列表中添加帖子时,它会动态更新,因此我希望它成为带有套接字的实时应用程序
我已经在服务器文件中这样设置了套接字
select * from @TABLE;
我的路线在另一个文件中
select ',"pipelineParameters":' + name from @TABLE
这是我打开应用程序时被触发的动作
const http = require('http');
const express = require('express');
const socketio = require('socket.io');
const connectDB = require('./config/db');
const app = express();
const server = http.createServer(app);
const io = socketio(server);
const PORT = process.env.PORT;
// Connect Database
connectDB();
// Init Middelware
app.use(express.json({ extended: false }));
// app.get('/', (req, res) => {
// res.send('Api running');
// });
// connect to socket
io.on('connection', (socket) => {});
// set io as const to be able to use it in another route
app.use(function (req, res, next) {
req.io = io;
next();
});
// Define Route
app.use('/api/users', require('./routes/api/user'));
app.use('/api/auth', require('./routes/api/auth'));
app.use('/api/posts', require('./routes/api/post'));
app.use('/api/profile', require('./routes/api/profile'));
app.use('/api/friend', require('./routes/api/friends'));
server.listen(PORT, () => console.log(`Server listen on port ${PORT}`));
这是我用来显示帖子的组件
router.get('/', auth, async (req, res) => {
try {
let friendList = await Friends.findOne({ user: req.user.id });
let postitem = await Post.find({ user: req.user.id }).sort({
date: -1,
});
if (!postitem) {
return res.status(400).json({ msg: 'No post Found! Start now' });
}
if (friendList) {
if (friendList.friends.map((item) => item.posts).length > 0) {
friendList.friends.forEach(async (friend) => {
const friendPost = await Post.find({
user: friend.user,
});
if (friendPost.length > 0) {
friendPost.map((item) => {
postitem.unshift(item).sort({
date: -1,
});
});
// socket.emit('postArray', console.log('this is my data one'));
res.json(postitem);
}
// socket.emit('postArray', console.log('this is my data two'));
res.json(postitem);
});
}
} else {
// const myData = res.json(postitem);
// socket.emit('postArray', postitem);
res.json(postitem);
}
// await update.save();
} catch (err) {
console.error(err.message);
res.status(400).send('Server Error');
}
});