- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已经使用express和lowdb数据库完成了添加/删除/编辑/更新代码,但它非常基本,尤其是在更新部分,而我想使用if/then/else语句,但我的小脑袋做不到独自一人;代码如下:
/* Update the data from displayed table of editup.pug */
router.post('/update', (req, res, next) => {
db.read(); //read current datas in db
let uid = req.body.id; // transfer "id" from TABLE to "uid"
/* Do actual updation of User via ID */
db.get('users')
.find({id: uid})
.assign({First_Name: req.body.First_Name})
.assign({Middle_Name: req.body.Middle_Name})
.assign({Last_Name: req.body.Last_Name})
.assign({Email: req.body.Email})
.write();
/* Do actual updation of User via ID ends here */
res.status(200);
res.redirect('/');
});
完整代码如下:
app.js
var port = 3000
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
index.js
var express = require('express');
var router = express.Router();
var shortid = require('shortid');
var low = require('lowdb');
var FileSync = require('lowdb/adapters/FileSync');
var adapter = new FileSync('./DBase/shortIdDB.json');
var db = low(adapter);
// default user list
db.defaults({ users: [] }).write();
/* GET data listing. Display list of current data in table */
router.get('/', (req, res, next) => {
db.read(); //read current datas in db
var putusers=db.get('users'); // use 'users:' section of db
var data = putusers.value(); // transfer values from getusers to data
res.render('index', { data }); // Send values from data to Table
console.log('Your Datas:', data);
});
// Form post -- Start adding data from FORM to DB
router.post('/add', (req, res) => {
db.read(); //read current datas in db
/* start collecting data from FORM */
var FormFeed = {
id: shortid.generate(),
First_Name: req.body.FName,
Middle_Name: req.body.MName,
Last_Name: req.body.LName,
Email: req.body.EMail};
/* collect data from FORM end here */
db.get('users').push(FormFeed).write(); // push and write to the db
res.redirect('/');
});
// delete selected record via id
router.get('/delete', function(req, res) {
db.read(); //read current datas in db
let uid = req.query.id; // transfer "id" from TABLE to "uid"
let data = db.get('users').find({ id: uid }).value(); // find and collect data via "uid"
console.log("User to Process: ", data, "and the id: ", uid);
/* Do actual deletion of User via ID */
db.get('users')
.remove({ id: uid })
.write();
/* Do actual deletion of User via ID End here!!! */
res.status(200);
res.redirect('/');
});
/* GET data via ID to update and display data in table */
router.get('/toupdate', (req, res, next) => {
db.read(); //read current datas in db
let uid = req.query.id; // transfer "id" from TABLE to "uid"
let dataup = db.get('users').find({ id: uid }).value(); // find and collect data via "uid"
console.log("User to Process: ", dataup, "and the id: ", uid);
res.render('editup', { dataup }); // Send values from data to Table
});
/* Update the data from displayed table of editup.pug */
router.post('/update', (req, res, next) => {
db.read(); //read current datas in db
let uid = req.body.id; // transfer "id" from TABLE to "uid"
/* Do actual updation of User via ID */
db.get('users')
.find({id: uid})
.assign({First_Name: req.body.First_Name})
.assign({Middle_Name: req.body.Middle_Name})
.assign({Last_Name: req.body.Last_Name})
.assign({Email: req.body.Email})
.write();
/* Do actual updation of User via ID ends here */
res.status(200);
res.redirect('/');
});
module.exports = router;
index.pug
extends layout
block content
.container
h2 NodeJs Express LowDB - View Add, Edit/Update, Delete records
.success
.error
form(id='form1' method='post')
input#id(type='hidden', name='id', value='')
table
tr
td(style='text-align: center')
input#First_Name(type='text',name='FName', placeholder='First Name', value='')
|
input#Middle_Name(type='text',name='MName', placeholder='Middle Name', value='')
|
input#Last_Name(type='text',name='LName', placeholder='Last Name', value='')
|
input#Email(type='text',name='EMail', placeholder='Email Address', value='')
|
input#subbtn(type="submit" onclick="javascript: form.action='/Add'" Value='Add')
tbody
table
tr
th id
th First Name
th Middle Name
th Last Name
th Email
th(colspan='2') Action
each users in data
tr
td= users.id
td= users.First_Name
td= users.Middle_Name
td= users.Last_Name
td= users.Email
td(id="tdclck1"): a(href='http://localhost:3000/toupdate?id='+users.id) Edit
td(id="tdclck2"): a(href='http://localhost:3000/delete?id='+users.id) Delete
editup.pug
extends layout
block content
.container
h2 NodeJs Express LowDB - View Add, Edit/Update, Delete records
.success
.error
form(id='form2' method='post')
table
tr
th id
th First Name
th Middle Name
th Last Name
th Email
th Action
tr()
td()
input(type='text',name='id',readonly,value=dataup.id)
td()
input(type='text',name='First_Name',value=dataup.First_Name)
td()
input(type='text',name='Middle_Name',value=dataup.Middle_Name)
td()
input(type='text',name='Last_Name',value=dataup.Last_Name)
td()
input(type='text',name='Email',value=dataup.Email)
td
input#subbtn(type="submit" onclick="javascript: form.action='/Update'" Value='Update')
a(href="/") << back
shotidDB.json
{
"users": [
{
"id": "-34BAqsS",
"First_Name": "Kauna-unahan",
"Middle_Name": "Kagitna-ginaan",
"Last_Name": "Kahuli-hulihan",
"Email": "sdfg@sdfv.dfc"
},
{
"id": "wtWsbepJ",
"First_Name": "Pangalan",
"Middle_Name": "GitnangPangalan",
"Last_Name": "HulingPangalan",
"Email": "kljjl123@ooo.com"
},
{
"id": "zyBMsLtJ",
"First_Name": "Kalatsa",
"Middle_Name": "palitsako",
"Last_Name": "ayooo",
"Email": "walay.ayo@abc.com"
},
{
"id": "vxqDSrPm",
"First_Name": "newuser",
"Middle_Name": "newmid",
"Last_Name": "newlast",
"Email": "newmail@mail.com"
},
{
"id": "ybl4yvNS",
"First_Name": "Kaunaunahan Ngalan",
"Middle_Name": "Kagitnagitnaan Pangalan",
"Last_Name": "Apelyido",
"Email": "kakaape@email.ph"
}
]
}
我已经设法更改了实现 if/else 语句的更新部分,代码如下:
/* Update the data from displayed table of editup.pug Revision 1 */
router.post('/update', (req, res, next) => {
db.read(); //read current datas in db
let uid = req.body.id; // transfer "id" from TABLE to "uid"
/* Do actual updation of User via ID */
let dataup = db.get('users').find({ id: uid }).value();
if (dataup.First_Name === req.body.First_Name) {
console.log("No change in First_Name");
} else {
db.get('users').find({id: uid})
.assign({First_Name: req.body.First_Name})
.write();
}
if (dataup.Middle_Name === req.body.Middle_Name) {
console.log("No change in Middle_Name");
} else {
db.get('users').find({id: uid})
.assign({Middle_Name: req.body.Middle_Name})
.write();
}
if (dataup.Last_Name === req.body.Last_Name) {
console.log("No change in Last_Name");
} else {
db.get('users').find({id: uid})
.assign({Last_Name: req.body.Last_Name})
.write();
}
if (dataup.Email === req.body.Email) {
console.log("No change in Email");
} else {
db.get('users').find({id: uid})
.assign({Email: req.body.Email})
.write();
}
/* Do actual updation of User via ID ends here */
res.status(200);
res.redirect('/');
});
最佳答案
好吧,我的建议是添加一个函数来为您执行此操作,因为有很多重复。
if (dataup.Last_Name === req.body.Last_Name) {
console.log("No change in Last_Name");
} else {
db.get('users').find({id: uid})
.assign({Last_Name: req.body.Last_Name})
.write();
}
像这样:
function updateUser(userParam, userId, dbIntance, dataup){
if (dataup.userParam=== req.body.userParam) {
console.log(`No change in ${userParam}`);
} else {
dbIntance.get('users').find({id: userId})
.assign({userParam: req.body.userParam})
.write();
}
}
所以现在只需用这段代码替换所有的 if 即可。
const userDetail = ['First_Name ', 'Middle_Name', 'Last_Name', 'Email']
for(let i=0; i<userDetail.length; i++){
this.updateUser(userDetail[i], uid, db, dataup);
}
干净、简洁是我们的目标,而且也不仅仅是基本的。您可以查看下面的链接,了解 Nodejs 的基于 Controller 的结构,这是一些帮助您继续前进的高级内容。希望它有帮助:)
https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/routes
关于javascript - lowdb 添加/编辑/更新/删除成功,但需要使用 if/then/else 语句对更新部分进行一些更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59509480/
创建一个“海盗对话”,可以选择左手或右手。我希望它对“左”和“右”的不同拼写做出积极的回答(正如您将在代码中看到的那样),但是,当我为所有非“右”或“左”的输入添加最终的“else”代码时,它给了我一
With 语句 对一个对象执行一系列的语句。 With object statements End With 参数 object 必需的部分
While...Wend 语句 当指定的条件为 True 时,执行一系列的语句。 While condition  ; Version [stat
所以我正在处理的代码有一个小问题。 while True: r = input("Line: ") n = r.split() if r == " ":
我有一个对象数组: var contacts = [ { "firstName": "Akira", "lastName": "Laine", "number"
int main() { int f=fun(); ... } int fun() { return 1; return 2; } 在上面的程序中,当从main函数中调用一个
我的项目中有很多 if 语句、嵌套 if 语句和 if-else 语句,我正在考虑将它们更改为 switch 语句。其中一些将具有嵌套的 switch 语句。我知道就编译而言,switch 语句通常更
Rem 语句 包含程序中的解释性注释。 Rem comment 或 ' comment comment 参数是需要包含的注释文本。在 Rem 关键字和 comment 之间应有一个空格。
ReDim 语句 在过程级中声明动态数组变量并分配或重新分配存储空间。 ReDim [Preserve] varname(subscripts) [, varname(subscripts)]
Randomize 语句 初始化随机数生成器。 Randomize [number] number 参数可以是任何有效的数值表达式。 说明 Randomize 使用 number 参数初始
Public 语句 定义公有变量并分配存储空间。在 Class 块中定义私有变量。 Public varname[([subscripts])][, varname[([subscripts])
Sub 语句 声明 Sub 过程的名称、参数以及构成其主体的代码。 [Public [Default]| Private] Sub name [( arglist )]
Set 语句 将对象引用赋给一个variable或property,或者将对象引用与事件关联。 Set objectvar = {objectexpression | New classname
我有这个代码块,有时第一个 if 语句先运行,有时第二个 if 语句先运行。我不确定为什么会这样,因为我认为 javascript 是同步的。 for (let i = 0; i < dataObje
这是一个 javascript 代码,我想把它写成这样:如果此人回答是,则回复“那很酷”,如果此人回答否,则回复“我会让你开心”,如果此人回答的问题包含"is"或“否”,请说“仅键入”是或否,没有任何
这是我的任务,我尝试仅使用简短的 if 语句来完成此任务,我得到的唯一错误是使用“(0.5<=ratio<2 )”,除此之外,构造正确吗? Scanner scn = new Scanner(
有没有办法在 select 语句中使用 if 语句? 我不能在这个中使用 Case 语句。实际上我正在使用 iReport 并且我有一个参数。我想要做的是,如果用户没有输入某个参数,它将选择所有实例。
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: If vs. Switch Speed 我将以 C++ 为例,但我要问的问题不是针对特定语言的。我的意思是一
Property Set 语句 在 Class 块中,声明名称、参数和代码,这些构成了将引用设置到对象的 Property 过程的主体。 [Public | Private] Pro
Property Let 语句 在 Class 块中,声明名称、参数和代码等,它们构成了赋值(设置)的 Property 过程的主体。 [Public | Private] Prop
我是一名优秀的程序员,十分优秀!