Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js (Sequelize+;Postgres+;NodeJS)从另一个表中插入FK(userID)_Node.js_Postgresql_Sequelize.js - Fatal编程技术网

Node.js (Sequelize+;Postgres+;NodeJS)从另一个表中插入FK(userID)

Node.js (Sequelize+;Postgres+;NodeJS)从另一个表中插入FK(userID),node.js,postgresql,sequelize.js,Node.js,Postgresql,Sequelize.js,我正在使用连接到PostgreSQL的Sequelize,由于我想使用sync函数,我想准备有效的模型在每个环境中创建表 编辑: 钱包: 'use strict'; module.exports = function(db, DataTypes) { var Wallet = db.define('Wallet', { id: { type: DataTypes.INTEGER, autoIncrement: true, allowNull: f

我正在使用连接到PostgreSQL的Sequelize,由于我想使用sync函数,我想准备有效的模型在每个环境中创建表

编辑:

钱包:

'use strict';

module.exports = function(db, DataTypes) {
  var Wallet = db.define('Wallet', {
    id: {
      type: DataTypes.INTEGER,
      autoIncrement: true,
      allowNull: false,
      primaryKey: true
    },
    money: {
      type: DataTypes.INTEGER,
      allowNull: false,
      defaultValue: 0
    }
    createdAt: DataTypes.DATE,
    updatedAt: DataTypes.DATE
  }, {
    tableName: 'wallet',
    classMethods:{
      associate : function( models ) {
        Wallet.belongsTo( models.User,{ foreignKey : 'id_user'});
      }
    }

  });

  return Wallet;
};
用户:

为什么

它不起作用了吗?帐户正在创建,然后我想用特定的用户id创建钱包。我甚至没有错误

救命啊

您应该查看sequelize文档

在您的情况下,您需要定义:

Wallet.belongsTo(User,{foreignKey: 'id_user'});
这会将id_用户添加到Wallet模型中,因此您不需要在Wallet模型中指定id_用户属性

如果使用sequelize导入函数,则应在“associate”类方法中添加如下关系:

module.exports = function(db, DataTypes) {
  var Wallet = db.define('Wallet', {
    id: {
      type: DataTypes.INTEGER,
      autoIncrement: true,
      allowNull: false,
      primaryKey: true
    },
    pin: {
      type: DataTypes.INTEGER,
      allowNull: false,
      defaultValue: 0
    },
    money: {
      type: DataTypes.STRING,
      allowNull: false,
      defaultValue: 0
    },
    createdAt: DataTypes.DATE,
    updatedAt: DataTypes.DATE
  }, {
    tableName: 'Wallet',
    classMethods:{
           associate : function( models ) {
                Wallet.belongsTo( models.User,{ foreignKey : 'id_user'});
            }
    }
  });

如果需要为现有用户创建新钱包,可以使用user.createWallet({})。可以更具体一些吗?这是个好主意,但我不知道该把它放在哪里。。。现在它使用的是:
var afterCreateHook=function(user,options,fn){this.associations.Wallet.target.create({id_user:user.id}).then(function(otherModel){fn(null,user);}).catch(function(err){return;})我需要更多信息,如果您有一个名为User的用户实例,它有关联方法,其中一个是createWallet,因为用户与wallet有关联,所以您可以执行:User.createWallet({pin:123456,money:PEN})。然后(..).catch(..)
Wallet.belongsTo(User,{foreignKey: 'id_user'});
module.exports = function(db, DataTypes) {
  var Wallet = db.define('Wallet', {
    id: {
      type: DataTypes.INTEGER,
      autoIncrement: true,
      allowNull: false,
      primaryKey: true
    },
    pin: {
      type: DataTypes.INTEGER,
      allowNull: false,
      defaultValue: 0
    },
    money: {
      type: DataTypes.STRING,
      allowNull: false,
      defaultValue: 0
    },
    createdAt: DataTypes.DATE,
    updatedAt: DataTypes.DATE
  }, {
    tableName: 'Wallet',
    classMethods:{
           associate : function( models ) {
                Wallet.belongsTo( models.User,{ foreignKey : 'id_user'});
            }
    }
  });