卖火柴的咖啡猫
卖火柴的咖啡猫
  • 发布:2023-07-16 19:24
  • 更新:2024-01-19 14:31
  • 阅读:160

请教schema表关联竟然毫无效果

分类:uniCloud

改造的opendb-mall-goods.schema,表名没改,关联uni-id-user表,数据提交后竟然没有字段user_id,完全搞不懂问题在哪里,请教大佬帮忙解惑

{  
    "bsonType": "object",  
    "required": ["name", "category", "priceType", "real_name", "phone", "region",  
        "detail", "totalPrice", "skuList", "is_new", "is_hot","userid"  
    ],  
    "permission": {  
        "read": true,  
        "create": true,  
        "update": true,  
        "delete": true  
    },  
    "properties": {  
        "_id": {  
            "description": "存储文档 ID(商品 ID),系统自动生成"  
        },  
        "category_id": {  
            "bsonType": "string",  
            "description": "分类 id,参考`opendb-mall-categories`表",  
            "foreignKey": "opendb-mall-categories._id"  
        },  
        "user_id": {  
            "bsonType": "string",  
            "description": "用户ID, 参考`uni-id-users` 表",  
            "foreignKey": "uni-id-users._id",  
            "defaultValue": {  
              "$env": "uid"  
            }  
          },  
        "name": {  
            "bsonType": "string",  
            "description": "商品名称",  
            "title": "名称",  
            "trim": "both"  
        },  
            }  
        ],  

        "createTime": {  
            "bsonType": "timestamp",  
            "description": "创建时间",  
            "defaultValue": {  
                "$env": "now"  
            }  
        }  
    },  
}
2023-07-16 19:24 负责人:无 分享
已邀请:
DCloud_uniCloud_CRL

DCloud_uniCloud_CRL

提交的数据是什么?

  • 卖火柴的咖啡猫 (作者)

    是表单数据,提交很正常,就是联表后提交不出现user_id字段

    2023-07-17 11:41

  • 卖火柴的咖啡猫 (作者)

    提交的数据在表里面也可以看到的

    2023-07-17 11:41

  • DCloud_uniCloud_CRL

    回复 1***@qq.com: 提交的数据中有user_id字段吗?

    2023-07-17 11:57

  • 卖火柴的咖啡猫 (作者)

    回复 DCloud_uniCloud_CRL: 没有,我看了别人的一个视频,他也没有加user_id提交的,反复看了几遍应该没看错的

    2023-07-17 14:42

  • 卖火柴的咖啡猫 (作者)

    回复 DCloud_uniCloud_CRL: 难道提交的数据中需要加这个字段上去?哪个表中添加字段后不是自动关联的吗

    2023-07-17 14:47

  • DCloud_uniCloud_CRL

    回复 1***@qq.com: 你是在什么场景下用的,贴下代码看下。

    2023-07-17 16:24

  • 卖火柴的咖啡猫 (作者)

    回复 DCloud_uniCloud_CRL: 好的,是调用云函数提交订单到数据库的表中的,代码贴在下方了,谢谢哦,提交订单很正常

    2023-07-17 16:42

卖火柴的咖啡猫

卖火柴的咖啡猫 (作者)

云函数

'use strict';  
// cloudfunctions/submitOrder/index.js  

const db = uniCloud.database()  
const collection = db.collection('opendb-mall-goods')  

exports.main = async (event, context) => {  
  try {  
    const result = await collection.add({  
      name: event.name,  
      createTime: new Date(),  
    })  
console.log('result:', result)  
    return {  
      code: 0,  
      message: '提交订单成功',  
      data: result.data,  
    }  
  } catch (err) {  
    return {  
      code: -1,  
      message: '提交订单失败',  
      data: err.message,  
    }  
  }  
}
卖火柴的咖啡猫

卖火柴的咖啡猫 (作者)

调用云函数提交订单 我把没关联的字段和条件删掉了

async formSubmit(e) {  
                console.log(e)  
                try {  
                    const res = await uniCloud.callFunction({  
                        name: 'submission',  
                        data: {  
                            name: this.name,  
                            single:this.single  
                        },  
                    })  
                    console.log('res:', res)  
                    if (res.result.code === 0) {  
                    // 跳转到提交成功页面,本页面不提示  
                              uni.reLaunch({ url: '/pages/success/success' });  
                    } else {  
                        uni.showToast({  
                            title: '提交订单失败',  
                            icon: 'none',  
                        })  
                    }  
                } catch (err) {  
                    console.error('error:', err)  
                    uni.showToast({  
                        title: '提交订单失败',  
                        icon: 'none',  
                    })  
                }  
            }
  • DCloud_uniCloud_CRL

    这肯定得你手动传了啊,你是不是理解错了,自动关联指的是你有user_id在查询时可以自动连表查询,不是在插入时自动插入,他哪有那么智能啊。

    2023-07-17 16:45

  • 卖火柴的咖啡猫 (作者)

    回复 DCloud_uniCloud_CRL: 我这是登录状态下提交的订单呀,而且那个视频真的是没有提交user_id,第三节就是https://www.bilibili.com/video/BV1yG4y1h7ck/?p=2&vd_source=cb6a487a2b31a3728d73afa7e480df57

    2023-07-17 16:54

  • 卖火柴的咖啡猫 (作者)

    回复 DCloud_uniCloud_CRL: 而且2个表都在数据库的,我把user表id获取下来再传上去订单表,这样感觉联表也没啥意义啊

    2023-07-17 16:57

  • DCloud_uniCloud_CRL

    回复 1***@qq.com: 你用uniCloud.database获取实例,只能通过手动传user_id来入库。你应该用uniCloud.databaseForJQL来执行入库操作,他会带上当前用户的uid。

    2023-07-17 17:08

  • 卖火柴的咖啡猫 (作者)

    回复 DCloud_uniCloud_CRL:那uniCloud.databaseForJQL这个该怎么写呢

    2023-07-17 17:49

  • DCloud_uniCloud_CRL

    回复 1***@qq.com: 看下jql文档 https://uniapp.dcloud.net.cn/uniCloud/jql.html

    2023-07-17 17:54

  • 卖火柴的咖啡猫 (作者)

    回复 DCloud_uniCloud_CRL: 就是没看懂哎,新增就给了仅允许collection().add()这么一条,其他的格式完全没有

    2023-07-17 17:59

  • DCloud_uniCloud_CRL

    回复 1***@qq.com: 新增的话只有 add,https://uniapp.dcloud.net.cn/uniCloud/jql.html#add

    2023-07-17 18:06

  • 卖火柴的咖啡猫 (作者)

    回复 DCloud_uniCloud_CRL: 是啊,感谢你不厌其烦的回复,我放弃了哎,折腾了几天还是用回你开始说的方法,前几天觉得提交订单时候提交id不合理就没用,没想到还是回去用了,官方示例实在太简洁了

    2023-07-17 19:14

  • DCloud_uniCloud_CRL

    回复 1***@qq.com: const db = uniCloud.database() 换成 const db = uniCloud.databaseForJQL() 就可以。之后操作数据库都用jql语法就行。

    2023-07-17 19:34

  • 卖火柴的咖啡猫 (作者)

    回复 DCloud_uniCloud_CRL: 试了下确实系统认可,不过还是获取不到用户信息,联表没效果

    2023-07-17 20:23

卖火柴的咖啡猫

卖火柴的咖啡猫 (作者)

我就是觉得关联表了之后应该自动生成user_id这字段才对,否则我关联他有什么意义,直接获取到uni-id-user的id提交上去就好了呀,何必关联

1***@qq.com

1***@qq.com

请问这个问题解决了吗?我也是按照你发的这个教程,遇到和你同样的问题,排查很多次就是无法解决

要回复问题请先登录注册