有没有办法禁用 Sequelize JS 中自动生成的主键?
我们使用 Sequelize 的同步方法在 PostgreSQL 中创建表。但是我们的联结表有一个问题......我们不希望联结表中有主键,但是如果我们自己不指定主键,Sequelize 会自动生成一个主键。我可以在所有列上指定主键,但这不是最好的方法......
谁知道如何禁用 Sequelize JS 中的主键?
我无法通过执行来选择特定顶点g.V(3640).valueMap(true).unfold()。任何在命令中的括号之间包含 ID 的命令g.V()似乎都不起作用。
这就是我所做的:
我是图形数据库新手,正在尝试使用 Gremlin 控制台。我首先创建一个实例:
graph = TinkerGraph.open()
g=graph.traversal()
Run Code Online (Sandbox Code Playgroud)
并通过导入数据库文件加载示例数据.graphml:
g.io(graphml()).readGraph('/full/path/to/air-routes-latest.graphml')
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,因为计数给出了很好的结果
gremlin> g.V().count()
==>3642
Run Code Online (Sandbox Code Playgroud)
不幸的是,以下内容不起作用:
gremlin> g.V(3640).valueMap(true).unfold()
Run Code Online (Sandbox Code Playgroud)
我认为这很奇怪,因为通过执行以下命令
gremlin> g.V()
==>v[3640]
==>v[2306]
...
Run Code Online (Sandbox Code Playgroud)
该 ID 似乎确实存在。为什么我无法访问特定 ID,有什么想法吗?我尝试了不同的命令,但g.V()似乎工作正常,但g.V(3640)事实并非如此。是否因为我使用 TinkerGraph 而不是 Gremlin 数据库,可能会出现什么问题?
编辑:
看来我的 id 被保存为字符串,因为g.V("2").valueMap(true).unfold()确实给了我结果。
我们正在尝试使用Sequelize在PostgreSQL内部自动创建表。不幸的是,它没有创建外键作为约束。这是我的一个模型的示例:
module.exports = function(schema, DataTypes) {
var definition = {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
deal_id: {
type: DataTypes.INTEGER
},
image: DataTypes.STRING,
};
var image = schema.define('Image', definition, {
tableName: 'images', // this will define the table's name
timestamps: false, // this will deactivate the timestamp columns
syncOnAssociation: true,
classMethods: {
getDefinition: function() {
return definition;
},
associate: function(_models) {
image.belongsTo(_models.Product, {
foreignKey: 'deal_id'
});
}
}
});
return image;
};
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?
TLDR; 我的问题与PHP不同.是否可以将array_column与对象数组一起使用.我只想更改数组中的键并保留对象,而不是将对象的值存储在单独的数组中,如给定的答案.
我想将具有对象的数组的键设置为对象的值.所以这个数组:
$array = Array
(
[0] => stdClass Object
(
[id] = 12234
[value] = some value
)
[1] => stdClass Object
(
[id] = 12994
[value] = some value
)
)
Run Code Online (Sandbox Code Playgroud)
应该成为:
$array = Array
(
[12234] => stdClass Object
(
[id] = 12234
[value] = some value
)
[12994] => stdClass Object
(
[id] = 12994
[value] = some value
)
)
Run Code Online (Sandbox Code Playgroud)
现在我可以遍历阵列,但我更喜欢更清洁的解决方案.我认为这应该有效:
$newArray = array_column($array, null, 'id');
Run Code Online (Sandbox Code Playgroud)
唯一的问题是我有一个对象数组而不是数组数组,我还没有使用PHP7.现在我在PHP上发现了一个类似的问题 …
我正在尝试通过Famo.us连接MySQL数据库.但我无法完成它.该应用程序的文件夹结构如下所示:
main.js
/*globals define*/
define(function(require, exports, module) {
'use strict';
// import dependencies
var Engine = require('famous/core/Engine');
var ImageSurface = require('famous/surfaces/ImageSurface');
var StateModifier = require('famous/modifiers/StateModifier');
// create the main context
var mainContext = Engine.createContext();
// your app here
var logo = new ImageSurface({
size: [200, 200],
content: '/content/images/famous_logo.png'
});
var logoModifier = new StateModifier({
origin: [0.5, 0.5]
});
mainContext.add(logoModifier).add(logo);
});
Run Code Online (Sandbox Code Playgroud)
因为它在节点上运行我试图成功地在node_modules文件夹中安装mysql node_module.但我无法连接到它,因为如果我尝试在main.js中要求mysql with require('mysql'),它认为我想从src文件夹中尝试一个js文件.我不能直接指向node_modules文件夹,因为它也给我一个404错误,根据famo.us'文档,它不是这样做的.
所以我试着用这种方式将mysql代码添加到main.js,但它也没有工作:mysql node:
require(['mysql'], function(mysql) {
//foo and …Run Code Online (Sandbox Code Playgroud) postgresql ×2
sequelize.js ×2
arrays ×1
famo.us ×1
graph ×1
gremlin ×1
javascript ×1
mysql ×1
node.js ×1
php ×1
requirejs ×1
tinkergraph ×1
tinkerpop3 ×1