gpt4 book ai didi

node.js - Express Cassandra 从目录自动加载模型 - models.instance.Person 不是构造函数

转载 作者:太空宇宙 更新时间:2023-11-03 21:49:22 24 4
gpt4 key购买 nike

我基本上是在尝试实现 express-cassandra tutorial 中的人物模型。

我在从 model 文件夹自动加载模型时遇到问题。我的模型位于 /models/PersonModel.js 中。

module.exports = {
fields:{
name : "text",
surname : "text",
age : "int"
},
key:["name"]
}

初始化代码位于上一级的index.js中。这只是从教程中复制粘贴。初始化工作良好,不会引发错误。

var models = require('express-cassandra');

//Tell express-cassandra to use the models-directory, and
//use bind() to load the models using cassandra configurations.
models.setDirectory( __dirname + '/models').bind(
{
clientOptions: {
contactPoints: ['127.0.0.1'],
protocolOptions: { port: 9042 },
keyspace: 'mykeyspace',
queryOptions: {consistency: models.consistencies.one}
},
ormOptions: {
//If your keyspace doesn't exist it will be created automatically
//using the default replication strategy provided here.
defaultReplicationStrategy : {
class: 'SimpleStrategy',
replication_factor: 1
},
migration: 'safe',
createKeyspace: true
}
},
function(err) {
if(err) console.log(err.message);
else console.log(models.timeuuid());
}
);

当我尝试插入条目时出现问题。我收到错误 TypeError: models.instance.Person is not a constructor。原因是我猜模型没有自动加载。在模型对象的转储中,我可以看到目录设置正确并且实例模型为空。

我尝试按照教程进行操作。我错过了什么吗?有人有自动加载模型的工作示例吗?

最佳答案

迟到总比不到好!

“bind”是异步的,“function(err) {”是回调。

将“插入条目”代码放入其中,它将正常运行。

即。您正尝试在数据库初始化之前插入项目。

像这样:

models.setDirectory( __dirname + '/models').bind(
{
clientOptions: {
contactPoints: ['127.0.0.1'],
protocolOptions: { port: 9042 },
keyspace: 'mykeyspace',
queryOptions: {consistency: models.consistencies.one}
},
ormOptions: {
defaultReplicationStrategy : {
class: 'SimpleStrategy',
replication_factor: 1
},
migration: 'safe'
}
},
function(err) {
if(err) throw err;
addUser();
console.log("err thing");

// You'll now have a `person` table in cassandra created against the model
// schema you've defined earlier and you can now access the model instance
// in `models.instance.Person` object containing supported orm operations.
}
);

function addUser(){
var john = new models.instance.Person({
name: "John",
surname: "Doe",
age: 32,
created: Date.now()
});
john.save(function(err){
if(err) {
console.log(err);
return;
}
console.log('Yuppiie!');
});
}

关于node.js - Express Cassandra 从目录自动加载模型 - models.instance.Person 不是构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43345943/

24 4 0
文章推荐: html - 如何使
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com