我开始学习SequelizeJs然而我遇到一个小问题: 我有一个定义如下的模型:
var ex_table= sequelize.define("ex_table", {
concept1: Sequelize.STRING(5),
concept2: Sequelize.STRING(80),
concept3: Sequelize.STRING,
weight: Sequelize.INTEGER,
value: Sequelize.DECIMAL(20,2)
}, {
tableName: "samble_table"});
从表中检索单行有效,我这样做:
ex_table
.find({where: Sequelize.and({weight: 320193}, {concept1: 'AGLOK'}, {concept2: 'lambda'}, {concept2: 'Industry Group'})})
.complete(function (err, result) {
if (!!err) {
console.log("An error occurred while creating the table:", err);
} else {
console.log(result.values);
}
})
这给了我一行数据,这是预期的。 但是,当我尝试检索多行时,如下所示:
ex_table
.findAll({where: Sequelize.and({weight: 320193}, {concept1: 'AGLOK'}, {concept2: 'lambda'}, {concept2: 'Industry Group'})})
.complete(function (err, result) {
if (!!err) {
console.log("An error occurred while creating the table:", err);
} else {
console.log(result.values);
}
})
在这里我得到了底层的,任何想法如何获得多行?
答案 0 :(得分:1)
我发现,至少有两种获取所有行的方法: 正如@ barry-johnson评论的那样,结果是一个数组,所以我们像其他任何一样遍历数组:
ex_table
.findAll({where: Sequelize.and({weight: 320193}, {concept1: 'AGLOK'}, {concept2: 'lambda'}, {concept2: 'Industry Group'})})
.complete(function (err, result) {
if (!!err) {
console.log("An error occurred while creating the table:", err);
} else {
for (var i=0; i<result.length; i++) {
console.log(result[i].values);
}
}
})
或者Sequelize文档的Models部分中有关于原始查询的有趣内容:
有时您可能会期待您想要的大量数据集 显示,无需操纵。对于您选择的每一行,Sequelize 创建一个DAO,具有更新,删除,获取关联等功能。 如果您有数千行,这可能需要一些时间。如果你只是 需要原始数据并且不想更新任何东西,你可以这样做 这样可以获得原始数据。
由于我想查看原始数据,这就是我们需要的,所以我们可以像这样得到多行:
ex_table
.findAll({where: Sequelize.and({weight: 320193}, {concept1: 'AGLOK'}, {concept2: 'lambda'}, {concept2: 'Industry Group'})}, {raw:true})
.complete(function (err, result) {
if (!!err) {
console.log("An error occurred while creating the table:", err);
} else {
console.log(result);
}
})
希望这对其他人也有帮助。