【问题标题】:Trying to persist an object with an empty array in bookshelf.js尝试在 bookshelf.js 中使用空数组持久​​化对象
【发布时间】:2016-01-04 02:47:00
【问题描述】:

好吧,我对所有这些 TS 都很陌生,并试图让这个简单的 API 正常工作,我为我的数据类型定义了一些接口,然后在客户端和 API 本身之间共享。

但是当我尝试使用 bookshelf.js 将用户存储在 DB 中时,我碰壁了,因为我在 @987654322 中将用户-项目关系定义为 IProject 的数组@。

我正在尝试存储的user.d.ts

interface IUser {
    login: string
    pass: string
    name: string
    isAdmin: boolean
    projects?: IProject[]
}

而我在服务器中这样做的方式是发送一个空数组,期望 TS + bookshelf 来解决问题:

export function post(req, res){
    if (req.session.user && req.session.user.isAdmin) {
        let user: IUser = {
            login: req.body.login,
            pass: bcrypt.hashSync(req.body.pass),
            name: req.body.name,
            isAdmin: req.body.isAdmin,
            projects: []
        }

        createUser(user).then(status => res.sendStatus(status), status => res.sendStatus(status))

createUser() 的本质是:

User.forge(u).save().then(() => resolve(201), () => reject(500))

关于为什么我在 POST 时获得 500 的任何想法?

【问题讨论】:

    标签: typescript bookshelf.js


    【解决方案1】:

    关于为什么我在 POST-ing 时获得 500 的任何想法?

    500 表示服务器错误(不是客户端错误)。然而,这可能是因为服务器崩溃了,因为客户端发送了一些服务器没有正确处理的东西。

    您需要查看服务器上的堆栈跟踪。代码:

    User.forge(u).save().then ...
    

    表示forge OR save 函数存在问题(因为promise 的工作方式)。

    【讨论】:

    • 是的,我同意。但是由于请求在代码中被reject(500) 明确拒绝,因此服务器没有崩溃,也没有堆栈跟踪可供查看。那么,问题似乎是,我必须将projects 字段初始化为IProject 的空数组(因为这是书架的forge 函数所期望的)。但这仍然行不通 D:
    猜你喜欢
    • 2011-05-04
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    相关资源
    最近更新 更多