错误:只update修改项
如果你有过关系型数据库的经验,你会很容易犯只修改需要改变的一项,因为在关系型数据库中就是这样作的。先来准备一些数据。
/* demo01.js */
var workmate1={
name:'panpan',
age:24,
sex:1,
job:'前端',
skill:{
skillOne:'HTML+CSS',
SkillTwo:'JavaScript',
SkillThree:'PHP'
},
regeditTime:new Date()
}
var workmate2={
name:'panda',
age:18,
sex:1,
job:'JAVA后端',
skill:{
skillOne:'HTML+CSS',
SkillTwo:'J2EE',
SkillThree:'PPT'
},
regeditTime:new Date()
}
var workmate3={
name:'jspan',
age:20,
sex:1,
job:'UI设计',
skill:{
skillOne:'PhotoShop',
SkillTwo:'UI',
SkillThree:'Word+Excel+PPT'
},
regeditTime:new Date()
}
var db=connect('company')
var workmateArray=[workmate1,workmate2,workmate3]
db.workmate.insert(workmateArray)
print('[SUCCESS]: The data was inserted successfully.');
上面的代码,我们以文件的形式向数据库中插入了3条数据。
这时候我突然发现UI职位的性别出现了错误,本来人家是个美女,这里却写成了男,我们需要修改这条数据,但是经常会这样写。
这样写的问题是,我们的最后一条数据变成了只有sex:0,其它数据全部丢失了,这肯定不是我们想要的。这是新手在操作数据库修改时经常犯的一个错误,就是只修改变动的数据。
正确修改方法
可以声明一个变量,然后把要改变数据的全部信息放入变量,最后执行修改操作。
/* demo02.js */
var db=connect('company')
var workmate3={
name:'jspan',
age:20,
sex:0,
job:'UI设计',
skill:{
skillOne:'PhotoShop',
SkillTwo:'UI',
SkillThree:'Word+Excel+PPT'
},
regeditTime:new Date()
}
db.workmate.update({name:'jspan'},workmate3)
print('[update]: The data was updated successfully');
这时候你需要删除(db.workmate.drop())表中的数据,因为jspan这个用户已经不在数据库中了,然后重新使用load方法载入插入数据再进行修改。
执行命令如下:
db.workmate.drop()
load('./demo01.js')
load('./demo02.js')
现在这种方法才是正确的,数据修改正常了,但是你会发现写起来非常麻烦,而且特别容易写错。