小编bre*_*gly的帖子

通过手动定义的连接表进行关联查找

我知道这里描述了一个更简单的情况:

不幸的是,我的情况比这更复杂一些。我有一个用户模型,其中belongsToMany部门(又是belongsToMany用户),但通过userDepartment手动定义的联接表来实现。我的目标是获取属于给定部门的所有用户。首先我们看一下models/user.js

var user = sequelize.define("user", {
    id: {
        type: DataTypes.INTEGER,
        field: 'emplId',
        primaryKey: true,
        autoIncrement: false
    },
    firstname: {
        type: DataTypes.STRING,
        field: 'firstname_preferred',
        defaultValue: '',
        allowNull: false
    }
    ...
    ...
    ...

    associate: function(models) {
            user.belongsToMany(models.department, {
                foreignKey: "emplId",
                through: 'userDepartment'
                });
            })
    }
    ...
    return user;
Run Code Online (Sandbox Code Playgroud)

现在,看一下models/department.js

var department = sequelize.define("department", {
    id: {
        type: DataTypes.INTEGER,
        field: 'departmentId',
        primaryKey: true,
        autoIncrement: true
    },
    ...
    classMethods: { …
Run Code Online (Sandbox Code Playgroud)

node.js sequelize.js

5
推荐指数
1
解决办法
9479
查看次数

如何从相同类型的另一个方法内部使用&mut self调用方法?

我有一个Scanner已实现scan(&mut self)方法的结构。看起来像这样。

pub struct Scanner {
    input: String,
    output: Vec<String>,
    state: ScannerState,
}

impl Scanner {
    pub fn scan(&mut self) {
        self.state = ScannerState::CharMode;
        for character in self.input.chars() {
            match character {
                i @ '0'...'9'   => self.output.push(format!("Integer digit: {}", i)),
                '+'             => self.output.push("Addition operator: +".to_string()),
                '-'             => self.output.push("Subtraction operator: -".to_string()),
                '*'             => self.output.push("Multiplication operator: *".to_string()),
                '/'             => self.output.push("Division operator: /".to_string()),
                '%'             => self.output.push("Modulus operator: %".to_string()),
                '^'             => self.output.push("Exponent operator: ^".to_string()),
                '='             => self.output.push("Assignment operator: =".to_string()),
                ';' …
Run Code Online (Sandbox Code Playgroud)

rust

5
推荐指数
1
解决办法
653
查看次数

迭代并从选项向量中获取

每次我觉得我有点习惯的Rust有点想通了,它再次打败了我.在这种情况下,我有一个结构State,其中包含一个Vec<Option<Dude>>被调用的ods,其中Dude是一个结构,如下所示:

pub struct Dude {
    pub capacity: i32,
    pub status: DudeStatus,
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是定义一个State迭代的函数/方法ods.如果Dude给定索引中存在a (即,if ods[i] == Some(Dude)),则将其容量减1,如果这导致capacity==0,则删除Dudefrom ods.不幸的是,我似乎遇到了类型推断和/或所有权问题.这是我的尝试:

fn tick(&mut self) {
    for d in &self.ods {
        match d {
            Some(du) => {
                du.capacity -= 1;
                if du.capacity == 0 {
                    d.take();
                }
            }
            None => {}
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,这会产生3个编译错误:

src/state.rs:40:18: 40:26 error: mismatched types:
 expected `&std::option::Option<dude::Dude>`,
 found …
Run Code Online (Sandbox Code Playgroud)

rust

2
推荐指数
1
解决办法
1822
查看次数

标签 统计

rust ×2

node.js ×1

sequelize.js ×1