Sails.js 创建临时帆模型

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

对于单元测试,我需要创建临时模型对象,而不将其保存在DB中,只是为了有一些实例方法

模型结构示例

//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版本的

在config/connection.js中添加到数据库的连接

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。谢谢你的帮助