我试图在两个表之间设置1:1关系。RefreshToken表将有两个ForeignKey释放到Users表,如下图所示:

我使用sequelize-auto生成了我的sequelize模型。
用户模型:
module.exports = function(sequelize, DataTypes) {
return sequelize.define('Users', {
idUsers: {
type: DataTypes.INTEGER(11),
allowNull: false,
primaryKey: true
},
name: {
type: DataTypes.STRING(45),
allowNull: true
},
mail: {
type: DataTypes.STRING(45),
allowNull: false,
primaryKey: true
}
}, {
tableName: 'Users'
});
};
Run Code Online (Sandbox Code Playgroud)
RefreshToken模型:
module.exports = function(sequelize, DataTypes) {
return sequelize.define('RefreshToken', {
idRefreshToken: {
type: DataTypes.INTEGER(11),
allowNull: false,
primaryKey: true
},
token: {
type: DataTypes.TEXT,
allowNull: true
},
userId: {
type: DataTypes.INTEGER(11),
allowNull: false,
primaryKey: true,
references: {
model: 'Users',
key: …Run Code Online (Sandbox Code Playgroud) 我在一个需要绘制多边形的项目中工作。为了实现我的目标,我使用了Leaflet Draw,我已经禁用了除多边形工具之外的所有绘图工具,现在我只需要自定义按钮的工具图标,我进行了很多搜索,但我不知道如何自定义它。
在三个模型之间的连接操作后,我收到了一个有效的结果,但我会重命名 findAll 的连接操作生成的属性
询问:
const orchards = await db.Area.findAll({
include: [db.AreaCoordinate, db.Crop],
attributes: ['id', 'name']
});
Run Code Online (Sandbox Code Playgroud)
区域坐标模型:
module.exports = function (sequelize, DataTypes) {
var AreaCoordinate = sequelize.define('AreaCoordinate', {
latitude: {
type: DataTypes.STRING(45),
allowNull: true
},
longitude: {
type: DataTypes.STRING(45),
allowNull: true
}
}, {
classMethods: {
associate: function (models) {
AreaCoordinate.belongsTo(models.Area, {foreignKey: 'areaId'});
}
}
});
return AreaCoordinate;
};
Run Code Online (Sandbox Code Playgroud)
作物模型:
module.exports = function (sequelize, DataTypes) {
var Crop = sequelize.define('Crop', {
name: {
type: DataTypes.STRING(45),
allowNull: true
},
lang: { …Run Code Online (Sandbox Code Playgroud) 在我的其余架构中,有一个控制器(处理http请求)和一个服务(提供数据的业务逻辑)。
为了测试控制器,我试图对服务进行存根以提供固定的响应,但是我不明白如何对需要自定义对象作为参数的方法进行存根(如果该参数是文字,那么它将起作用)。
对于自定义对象(Farm),存根不起作用,因为并且我没有从服务方法中收到Promise,这是错误:
TypeError:无法在FarmsController.createFarm(/Users/giovannimarino/Projects/rt-cloud/services/farms/src/farms/farms.controller.ts:17:17)中读取null的'then'属性
farms.controller.spec.ts
describe('FarmsController', () => {
const farmsServiceMock: FarmsService = mock(FarmsService);
let controller: FarmsController;
interface TestData {
farm: Farm;
}
let testData: TestData;
beforeEach(() => {
reset(farmsServiceMock);
const farmsServiceMockInstance: FarmsService = instance(farmsServiceMock);
controller = new FarmsController(farmsServiceMockInstance);
testData = {
farm: <Farm> {
name: 'CattD',
imageUrl: 'img/farm-123b341.png',
lang: 'en',
}
};
});
describe('createFarm function', () => {
describe('success', () => {
it('should return HTTP 200 OK', async () => {
when(farmsServiceMock.createFarm(testData.farm)).thenReturn(Promise.resolve<Farm>(testData.farm));
const pathParameters: PathParameter = {
name: 'CattD', …Run Code Online (Sandbox Code Playgroud) 我需要解决 json 数组中的所有承诺,如下所示:
let list = [
{
id: 1,
data: new Promise((resolve, reject) => {
resolve('Cat')
})
},
{
id: 2,
data: new Promise((resolve, reject) => {
resolve('Dog')
})
},
{
id: 3,
data: new Promise((resolve, reject) => {
resolve('Mouse')
})
}
]
Run Code Online (Sandbox Code Playgroud)
我使用蓝鸟承诺。我使用 for 循环来迭代所有项目,我会知道是否有更优雅的方式。
预期结果:
[ { data: 'Cat', id: 1 },
{ data: 'Dog', id: 2 },
{ data: 'Mouse', id: 3 } ]
Run Code Online (Sandbox Code Playgroud) javascript ×4
node.js ×4
express ×2
mysql ×2
sequelize.js ×2
angularjs ×1
bluebird ×1
es6-promise ×1
google-maps ×1
leaflet ×1
mocha.js ×1
node-modules ×1
pdf ×1
pdfmake ×1
promise ×1
sinon ×1
typescript ×1
unit-testing ×1