gpt4 book ai didi

node.js - Sequelize 批量同步什么都不做

转载 作者:行者123 更新时间:2023-12-03 22:23:58 27 4
gpt4 key购买 nike

我无法让 sequelize.sync() 工作。在每个模型定义上调用 sync() 可以完美地工作,但从 sequelize 实例调用它似乎没有任何作用,就像模型管理器中没有注册模型一样。

考虑以下:

function syncAll() {
console.log('Retrieving exported models...')
let models = require('./models')
for(var modelName in models) {
let model = models[modelName]
// define() just wraps a regular sequelize.define() call
// model.define().sync() works!
model.define()
}

console.log('All exported models have been defined! Syncing database...')
sequelize.sync({
logging: true
}).then(function() {
// The operation completes but no command is executed in the DB
console.log('Database synchronization complete!')
}).catch(function(error) {
console.log("Database synchronization error:\n\t${error}")
})
}

只是想了解我缺少什么,为什么批量同步对我不起作用?

AFAIK 我只需要在调用 sequelize.sync() 之前定义所有模型,对吧?!

编辑 1

关于我的环境的一些信息:我在 debian 下使用 node 5.6 和 postgres

编辑 2

发现问题了。请参阅已接受答案的结尾...

最佳答案

sequelize example 中的这段代码对我来说很好用:

var sequelize = new Sequelize(config.database, config.username, config.password, config);
var db: any = {};

var Task = sequelize.define("Task", {
title: Sequelize.STRING
}, {
classMethods: {
associate: function(models) {
Task.belongsTo(models.User, {
onDelete: "CASCADE",
foreignKey: {
allowNull: false
}
});
}
}
});

var User = sequelize.define("User", {
username: Sequelize.STRING
}, {
classMethods: {
associate: function(models) {
User.hasMany(models.Task);
}
}
});

db.User = User;
db.Task = Task;

Object.keys(db).forEach(function(modelName) {
if ("associate" in db[modelName]) {
db[modelName].associate(db);
}
});

sequelize.sync().then(() => {
// some code here
});

模型已通过“sequelize.define(...)”定义,然后调用“sequelize.sync()”。

更新 1

我正在使用sqlite:
var config: any = {
"dialect": "sqlite",
"storage": "./db.development.sqlite"
};

从 OP 更新

我发现了这段代码和我的代码之间的唯一区别。由于我的逻辑中的一个错误, sequelize.define()sequelize.sync() 是从不同的 sequelize 实例(即不同的连接)调用的,并且每个连接都有自己的 modelManager,所以显然在第二个连接对象中没有要同步的模型。

关于node.js - Sequelize 批量同步什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35691557/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com