pragma solidity >=0.4.21 <0.7.0;
contract Student {
string public fName;
string public grade;
event Students (
string name,
string grade
);
function setStudents(string memory _fName, string memory _grade) public {
fName = _fName;
grade = _grade;
}
function getStudents() public view returns (string memory, string memory) {
return (fName, grade);
}
}
Это мой умный контракт, и я хотел бы знать, как я могу хранить данные в mongodb. Мне нужно использовать MVC для моего проекта, поэтому он будет использовать рули.
Ниже приведен мой добавочный руль для создания.
<h3>{{viewTitle}}</h3>
<form action="/student" method="POST" autocomplete="off">
<input type="hidden" name="_id" value="{{student._id}}">
<div class="form-group">
<label>Name</label>
<input id="name" type="text" class="form-control" name="name" placeholder="Full Name" value="{{student.name}}">
</div>
<div class="form-group">
<label>Grade</label>
<input id="grade" type="text" class="form-control" name="grade" placeholder="Grade" value="{{student.grade}}">
</div>
<div class="form-group">
<button id="button" type="submit" class="btn btn-info"><i class="fa fa-database"></i> Submit</button>
<a class="btn btn-secondary" href="/student/list"><i class="fa fa-list-alt"></i> View All</a>
</div>
</form>
Ниже приведен мой список рулей для отображения или восстановить данные.
<h3><a class="btn btn-secondary" href="/student"><i class="fa fa-plus"></i> Create New</a> Student List</h3>
<table class="table table-striped">
<thead>
<tr>
<th>Full Name</th>
<th>Grade</th>
</tr>
</thead>
<tbody>
{{#each list}}
<tr>
<td>{{this.name}}</td>
<td>{{this.grade}}</td>
</tr>
{{/each}}
</tbody>
</table>
Ниже находится контроллер.
const express = require('express');
var router = express.Router();
const mongoose = require('mongoose');
const Student = mongoose.model('Student');
router.get('/', (req, res) => {
res.render("student/add", {
viewTitle: "Insert Student"
});
});
router.post('/', (req, res) => {
insertRecord(req, res);
});
function insertRecord(req, res) {
var student = new Student();
student.name = req.body.name;
student.save((err, doc) => {
if (!err)
res.redirect('student/list');
else {
console.log('Error during record insertion : ' + err);
}
});
}
router.get('/list', (req, res) => {
Student.find({}).lean()
.exec(function(err, docs) {
if (!err) {
res.render("student/list", {
list: docs
});
}
else {
console.log('Error in retrieving student list :' + err);
}
});
});
module.exports = router;
Если кто-нибудь может показать мне, как это сделать, я действительно ценю это.