mysql – Sequelizejs中.save和.create有什么区别?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – Sequelizejs中.save和.create有什么区别?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1886字,纯文字阅读大概需要3分钟。
内容图文
我是Sequelize的新手,并努力了解这个非常奇怪的ORM新世界是如何运作的.一旦我似乎无法理解的事情是Sequelizejs中“.create”和“.save”之间的区别.我已经用两者编写了测试函数,除了语法略有不同之外,它们似乎都做了完全相同的事情.
这是使用“.save”方法
models.User.build({
username: req.body.username,
password: req.body.password,
first_name: req.body.firstName,
last_name: req.body.lastName
})
.save()
.then(function(task){
// some function...
})
.catch(function(error){
// some function...
});
这是使用“.create”方法
models.User.create({
username: req.body.username,
password: req.body.password,
first_name: req.body.firstName,
last_name: req.body.lastName
}).then(function(data) {
// some function...
});
我在这里看不到什么?
解决方法:
如文档http://docs.sequelizejs.com/en/latest/docs/instances/中所述
方法.build()创建一个非持久化实例,这意味着数据尚未保存在数据库中,但在执行期间仅存储在内存中.当程序停止时(服务器崩溃,执行结束或类似的事情),使用.build()创建的实例将丢失.
这就是.save()完成工作的地方.它将.build()方法构建的实例的数据存储在数据库中.
此方法允许您在将实例存储到数据库之前以所需的方式操作实例.
.create()方法只是.build()和.save()在同一个命令中的一个实例.对于您不需要操作实例的简单情况,它是一种便利,允许您使用单个命令将数据存储在数据库中.说明:
这个:
User.build({ name: "John" }).save().then(function(newUser){
console.log(newUser.name); // John
// John is now in your db!
}).catch(function(error){
// error
});
与此相同:
User.create({ name: "John"}).then(function(newUser){
console.log(newUser.name); // John
// John is now in your db!
}).catch(function(error){
// error
});
但你可以这样做:
var user = User.build({ name: "John"}); // nothing in your db yet
user.name = "Doe"; // still, nothing on your db
user.save().then(function(newUser){
console.log(newUser.name); // Doe
// Doe is now in your db!
}).catch(function(error){
// error
});
基本上,.build()和.save()使您能够在实例实例化之后,但在将数据存储在数据库之前对其进行修改.
内容总结
以上是互联网集市为您收集整理的mysql – Sequelizejs中.save和.create有什么区别?全部内容,希望文章能够帮你解决mysql – Sequelizejs中.save和.create有什么区别?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。