是否有类似于mongo.model()的东西;在DynamoDB ......?

时间:2017-03-04 08:56:58

标签: node.js mongodb amazon-dynamodb

我想在node.js脚本中创建Dynamo数据库表。

简而言之,我希望dynamo-db代码等效于以下内容:



var mongo = require('mongoose');
var MongoDB = mongo.connect('mongodb://localhost:27017/test').connection;
MongoDB.on('error', function(err) { console.log(err.message); });
MongoDB.once('open', function() {
  console.log("DynamoDB connection open");
});
var userschema = mongo.Schema({
	name: String,
	nickname: {type: String,default: ''},
	email: String,
	phone: String,
	type: String,
	port : String,
	deviceRegId: {type: String,default: ''},
	assignFlag: Number,
	created: {type: Date,default: Date.now}	,
	lastmsg : {type: String,default: ''} ,
	lasttime : {type: Date,default: Date.now} ,
	loginStatus : {type: Boolean,default: false} ,
	isOnline : {type: Boolean,default: false} ,
	chats: [{
			from: String,
			msgfrom: Number,
			name: String,
			msg: String,
			date: {type: Date, default: Date.now},
			flag: Number
	}]
});
var agent = mongo.model('naveen', userschema);
exports.mongo = mongo;
exports.agent = agent;




我正在尝试搜索类似的Dynamo功能,但找不到任何功能。任何帮助都会很有用。

1 个答案:

答案 0 :(得分:0)

以下为创建表格的示例代码(如果不存在),并使用默认值在其上创建项目。

请注意,DynamoDB上的属性不能为空值。例如,默认情况下,昵称不能设置为空字符串。

对于任何属性,如果设置空值并尝试插入数据,DynamoDB将抛出验证异常。

因此,默认不能为空字符串。

<强>代码: -

var dynamoose = require('dynamoose');
dynamoose.AWS.config.update({
    accessKeyId: 'AKID',
    secretAccessKey: 'SECRET',
    region: 'us-east-1'
});
dynamoose.local();
var Schema = dynamoose.Schema;

var userSchema = new Schema({
    name: {
        type: String,
        hashKey: true
    },
    nickname: String,
    email: String,
    phone: String,
    type: String,
    port: String,
    deviceRegId: String,
    assignFlag: Number,
    created: { type: Date, default: Date.now },
    lastmsg: { type: String },
    lasttime: { type: Date, default: Date.now },
    loginStatus: { type: Boolean, default: false },
    isOnline: { type: Boolean, default: false },
    chats: [{
        from: String,
        msgfrom: Number,
        name: String,
        msg: String,
        date: { type: Date, default: Date.now },
        flag: Number
    }]
},
    {
        throughput: { read: 15, write: 5 }
    });
var Table = dynamoose.Table;

var UserDetails = dynamoose.model('UserDetails', userSchema);

var user1 = new UserDetails({ name: 'John' });

user1.save(function (err) {
    if (err) { return console.log(err); }
    console.log('Added a new item');
});

创建的示例项目: -

日期值存储为数字。

Sample item inserted