小编t4n*_*3d3的帖子

MongoDB无法更新文档,因为_id是字符串,而不是ObjectId

我正在做一个休息api来在mongo数据库和web应用程序之间交换数据.这些数据是json格式的.

更新文档时遇到麻烦:

cannot change _id of a document.
Run Code Online (Sandbox Code Playgroud)

事实上,在我的JSON中,doc的_id存储为字符串并反序列化为字符串.而它作为ObjectID存储在mongo中.这解释了为什么mongo会引发错误.

  • 在mongo中:_id:ObjectId('51051fd25b442a5849000001')
  • 在JSON中:_id:"51051fd25b442a5849000001"

为避免这种情况,我手动将_id属性从字符串转换为ObjectID.但它看起来很难看,并且会因其他BSON类型而失败.

问:有没有一种干净的方法可以避免这种情况或做一个不错的JSON/BSON转换?

下面是我用来更新文档的代码.我正在使用带有express和mongodb的nodejs和本机驱动程序.

exports.updateById = function(req, res) {
var id = req.params.id;
var map = req.body;

map._id = new ObjectID.createFromHexString( map._id); // Manual conversion. How to avoid this???

console.log( 'Updating map: ' + id);
console.log( 'Map: ' + JSON.stringify( map));

db.collection('maps', function(err, collection) {
    if(err) throw err;
    collection.update(
        {'_id': new BSON.ObjectID(id)}, map, {safe:true}, 
        function(err, result) {
            if (err) {
                console.log('Updating map err: ' …
Run Code Online (Sandbox Code Playgroud)

javascript json mongodb node.js bson

7
推荐指数
1
解决办法
1万
查看次数

RxSwift基于变量构建一个Observable

我正在尝试构建一个Observable,它将根据Variable的值输出一个值.

像这样的东西:

let fullName = Variable<String>("")
let isFullNameOKObs: Observable<Bool>

isFullNameOKObs = fullName
            .asObservable()
            .map { (val) -> Bool in
                // here business code to determine if the fullName is 'OK'
                let ok = val.characters.count >= 3
                return ok
            }
Run Code Online (Sandbox Code Playgroud)

不幸的是,map func中的bloc永远不会被调用!

这背后的原因是:

  1. fullName变量绑定到UITextField,并使用RxSwift示例中定义的双向运算符< - >.
  2. 将观察到isFullNameOKObs Observable 隐藏或显示我的ViewController的提交按钮.

任何帮助将不胜感激.

谢谢

该模型

class Model {

    let fullName = Variable<String>("")
    let isFullNameOKObs: Observable<Bool>

    let disposeBag = DisposeBag()

    init(){

        isFullNameOKObs = fullName
            .asObservable()
            .debug("isFullNameOKObs")
            .map { (val) -> Bool in
                let ok …
Run Code Online (Sandbox Code Playgroud)

observable ios swift rx-swift rx-cocoa

7
推荐指数
1
解决办法
3399
查看次数

使用 RxSwift 自定义 UIControl 子类

我正在创建 UIControl 的自定义子类(我需要覆盖它的 draw 方法)并且我想添加 RxSwift 以将其isSelected属性绑定到我的模型。

到现在为止还挺好。这工作正常。

我的问题是如何更改值isSelected属性以响应用户 touchUpInside 事件?

我的第一次尝试是使用UIControl的addTarget方法,但是ControlProperty 不报告以编程方式更改isSelected的值(如文档中所述)。但我可以想出另一种方法来解决这个问题。

任何帮助表示赞赏。

子类的源代码:

class SYYesNoButton: UIControl {

override init(frame: CGRect) {
    super.init(frame: frame)

    // subscribe to touchUpInside event

    addTarget(
        self,
        action: #selector(userDidTouchUpInside),
        for: UIControlEvents.touchUpInside)
}



func userDidTouchUpInside() {

    // change the value of the property
    // this does not work, 
    // the change is not reported to the ControlProperty
    // HOW CAN I CHANGE THIS ??

    self.isSelected = !isSelected
} …
Run Code Online (Sandbox Code Playgroud)

subclass uicontrol swift rx-swift

7
推荐指数
2
解决办法
3663
查看次数

Firebase Auth Invite Only Scheme:如何将凭据传达给用户?

这是我的问题。要访问我们的应用程序,必须邀请用户。

这意味着,我们使用管理员 Web 应用程序在 Firebase 中创建用户帐户,并向他发送下载应用程序并使用它的邀请。

现在是下一个阶段,我们如何将他的凭据发送给新创建的用户?

我们的第一个想法是使用临时密码。我们可以通过电子邮件将密码发送给用户,并要求他在第一次登录时重新定义他的密码。

他这是个好主意吗?我想不是

有没有更好的办法?

谢谢您的帮助。吨

web firebase firebase-authentication

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

ios swift 核心图形 - 字符串颠倒

当我想在 CGContext 中绘制字符串时,文本出现颠倒。

我知道这个主题已经发布在这里,但没有一个解决方案对我有用。

我确实翻转了上下文:

graphContext.scaleBy(x: 1.0, y: -1.0)
graphContext.translateBy(
        x: CGFloat(0.0),
        y: CGFloat(-1.0 * graphSize.h))
Run Code Online (Sandbox Code Playgroud)

我也尝试对 textMatrix 执行相同的操作,但这对结果没有任何影响。

完整的项目源在这里:dropbox 屏幕截图在这里:屏幕截图

不明白为什么它不起作用。

谢谢

我的绘制方法:

override func draw(_ rect: CGRect) {

        let graphSize = GSize(
            w: Double(self.frame.width),
            h: Double(self.frame.height))

        rebaseAreas(graphSize: graphSize)

        graphContext = UIGraphicsGetCurrentContext()!
        graphContext.saveGState()

        // Flip the context coordinates, in iOS only
        graphContext.scaleBy(x: 1.0, y: -1.0)
        graphContext.translateBy(
            x: CGFloat(0.0),
            y: CGFloat(-1.0 * graphSize.h))


        // this has no effect, I can delete it and nothing changes
        graphContext.textMatrix = CGAffineTransform(scaleX: …
Run Code Online (Sandbox Code Playgroud)

string core-graphics ios swift

3
推荐指数
1
解决办法
1871
查看次数