Javascript 使用Sequelize.js创建简单PUT请求时出错

Javascript 使用Sequelize.js创建简单PUT请求时出错,javascript,node.js,express,sequelize.js,Javascript,Node.js,Express,Sequelize.js,我正在尝试学习sequelize.js,更新方法的类型错误如下: TypeError:无法读取未定义的属性“params” 我正在尝试获取路由的参数并更改其值。我试图获得一个用户名,并更改它的用户名和密码。这是我的密码: module.exports = function (sequelize) { var model = require("../models/employer_model")(sequelize); var Employer = model.Employer;

我正在尝试学习sequelize.js,更新方法的类型错误如下:

TypeError:无法读取未定义的属性“params”

我正在尝试获取路由的参数并更改其值。我试图获得一个用户名,并更改它的用户名和密码。这是我的密码:

module.exports = function (sequelize) {
    var model = require("../models/employer_model")(sequelize);
    var Employer = model.Employer;
    return {
        create: function (req, res) {
            if (req.body.username && req.body.password != null) {
                var newEmployer = {
                    username: req.body.username,
                    password: req.body.password
                }

            Employer.create(newEmployer).success(function () {
                res.send(200);
                res.json(req.dataValues);
            });} else {
                res.send(406);
            }
        },
        get: function (req, res) {
            Employer.findAll().success(function (employers) {
                res.send(employers);                
            });
        },
        update: function (req, res) {
            Employer.req.params.id = req.body;
            Employer.save().success(function (employers){
                res.send(200);
                res.json(req.dataValues);
            });
        }
    };
};
这里是server.js

// app dependencies
var express = require("express");
var Sequelize = require("sequelize");
var bodyParser = require('body-parser');
var morgan = require('morgan');
var app = express();
var models = require("./models"); 

//sequalize initialization
var sequelize = new Sequelize("postgres://rahul:jobletics@localhost:5432/jobletics");
var employerRoute = require("./routes/employer_route")(sequelize);

//middleware
app.use(bodyParser());
app.use(morgan('dev'));

models.sequelize.sync().success(function (err) {
    console.log('Express server listening on port 5000');
    app.get("/employer", employerRoute.get);
    app.post("/employer", employerRoute.create);
    app.put("/employer/:id", employerRoute.update);
    app.listen(5000);
});

有什么想法吗?

关于我得到的信息,您正在尝试设置模型的
参数并保存一个实例。您应该首先获取要更新/保存的实例

如果你想构建一个实例并让他们保存,你也可以这样做

希望这有帮助

Employer.req.params.id = req.body;

我猜,
Employer.req
在这里没有定义

可能
Employer.req
没有定义。那么用户名应该是什么呢?请显示你的app.js(其中express init)请看我现在更新了我的观点是,“Employer.req.params.id=req.body”您正在更改表的模型,而不是获取实例并保存它。Employer.req。没有参数,只有该表的一个实例。您可以使用(build或create)创建一个新的实例,或者使用find或findalls获取数据库。您的意思是,首先在update方法中创建一个employer实例,然后将该实例用于相同的新参数?但是该实例将如何引用正在更改/更新的对象。我假设您已经定义了您的模型,例如:var User=sequelize.define('User',{username:sequelize.STRING,生日:sequelize.DATE});我所说的实例代表数据库中your表中的一行。要更改此行,您需要从数据库获取它,这将是您的实例,要再次保存到数据库,您必须调用save或update,在这里您可以看到Yes this is my model,我将尝试您所说的“use strict”;var Sequelize=需要(“Sequelize”);module.exports=function(sequelize){var Employer=sequelize.define(“雇主”),{username:{type:sequelize.STRING,validate:{notNull:true}}},password:{type:sequelize.STRING,validate:{notNull:true}});返回{Employer:Employer};};Sequelizejs文档有几个例子,请看一下。这可能会帮你省去一些头痛