import React, { useState, useEffect } from 'react'; import axios from 'axios';
mongoose.connect('mongodb://localhost/handbook', { useNewUrlParser: true, useUnifiedTopology: true });
const Handbook = mongoose.model('Handbook', handbookSchema); Spe Petroleum Engineering Handbook Free
return ( <div> <h1>SPE Petroleum Engineering Handbook</h1> <form onSubmit={handleSearch}> <input type="search" value={searchQuery} onChange={(event) => setSearchQuery(event.target.value)} placeholder="Search" /> <button type="submit">Search</button> </form> <div> {handbookContent && handbookContent.map((chapter) => ( <div key={chapter.id}> <h2>{chapter.title}</h2> <p>{chapter.content}</p> </div> ))} </div> </div> ); }
function HandbookPage() { const [searchQuery, setSearchQuery] = useState(''); const [handbookContent, setHandbookContent] = useState({}); import React, { useState, useEffect } from 'react';
const express = require('express'); const app = express(); const mongoose = require('mongoose');
app.get('/api/handbook/search', async (req, res) => { try { const searchQuery = req.query.q; const handbookContent = await Handbook.find({ title: { $regex: searchQuery, $options: 'i' } }).exec(); res.json(handbookContent); } catch (error) { console.error(error); res.status(500).json({ error: 'Internal Server Error' }); } }); useEffect } from 'react'
app.listen(3000, () => { console.log('Server listening on port 3000'); });
useEffect(() => { axios.get('/api/handbook/content') .then(response => { setHandbookContent(response.data); }) .catch(error => { console.error(error); }); }, []);
export default HandbookPage;