Sails.js 创建临时帆模型
对于单元测试,我需要创建临时模型对象,而不将其保存在DB中,只是为了有一些实例方法 模型结构示例Sails.js 创建临时帆模型,sails.js,Sails.js,对于单元测试,我需要创建临时模型对象,而不将其保存在DB中,只是为了有一些实例方法 模型结构示例 //User.js - my model module.exports = { attributes: { firstName : { type: 'string' }, lastName : { type: 'string' }, getName: function () { return this.firstName + ':' + this.l
//User.js - my model
module.exports = {
attributes: {
firstName : { type: 'string' },
lastName : { type: 'string' },
getName: function () {
return this.firstName + ':' + this.lastName;
}
}
};
我有下一个目标
const testData = {
firstName: 'Foo',
lastName: 'Bar'
};
此行在db中创建新记录
User.create(testData);
是否可以避免创建记录?我该怎么做?要回答您最初的问题,在您调用Model.create()时,如果没有您或我在评论中描述的解决方法,Sails是否确实在您的数据库中创建记录的功能是不存在的 尽管如此,Sails确实为测试和开发目的提供了一个简单的解决方案 为方便开发,Sails提供了一个名为Sails磁盘的内置数据库适配器。该适配器通过将数据库记录读写到计算机硬盘上的JSON文件来模拟真实的数据库 如果您使用的是Sails版本的
localDiskDb: {
adapter: 'sails-disk'
},
在您正在测试的模型中,将模型指向sails磁盘连接
...
module.exports = {
connection: "localDiskDb",
attributes: {
...
如果您使用的是Sails版本>=v1:
相反,在config/datastores.js中将sails磁盘添加为数据存储
localDiskDb: {
adapter: 'sails-disk'
},
在您正在测试的模型中,如上所述,将模型指向sails磁盘数据存储
...
datastore: 'localDiskDb',
...
您可以设置第二个DB连接,使用sails磁盘,并通过添加
连接:“localDiskDb”
将您的模型指向该连接。这显然会在本地磁盘数据库中创建记录,但不会在您正在使用的任何其他数据库中创建记录。或者,您可以向模型添加beforeCreate生命周期回调,并在那里抛出一个错误以阻止保存。@Glen那么,您在Sails.lift
pass config中建议使用另一个连接吗?像Sails.lift{model{connection:'localDiskDb'}}
?附言:ATM我决定在摩卡回调之前的中创建DB中的真实记录,然后在回调之后的中销毁它。但这看起来像是一个解决办法。如果有一个temp模型实例而不在数据库中创建记录,那就太好了。所以,您当前所做的与我在第二点中提到的类似。你用的是什么版本的帆?@Glen在那个项目中我用的是0.12.14。但我的新项目是从v1版开始的。附言:我使用摩卡生命周期回调,而不是Sails模型。所以这个问题与v0.12有关。*?但这不是修改模型的好方法,因为通常他们必须将数据保存在数据库中。因此,最好在单元测试中Sails.lift
期间将模型连接|数据存储值更改为localDiskDb。谢谢你的帮助