2

コレクションに財務データを挿入しようとしているので、Javascript の数値を明示的に NumberLongs にキャストしたいと考えています。残念ながら、以下は機能しません。

  var myValue = parseInt('13', 10);
  Finance.insert({
    bal1: NumberLong(myValue),
  });

Meteorでこれを行う正しい方法は何ですか?

4

2 に答える 2

0

私自身の質問に答えます。私の投稿によると: https://groups.google.com/forum/#!topic/meteor-talk/o_co6nRjoYU

Meteor が MongoDB ドライバーを 1.3.7 から 1.3.17 にアップグレードしたとき、0.6.5 でキャスト オン リードの問題は解決されたと思います。

https://github.com/mongodb/node-mongodb-native/blob/master/HISTORY :

1.3.13 2013-07-31
- Added promoteLongs option for to allow for overriding the promotion of Longs to Numbers and return the actual Long.

そしてhttp://mongodb.github.io/node-mongodb-native/api-generated/db.htmlで:

Db()
promoteLongs {Boolean, default:true}, when deserializing a Long will fit it into a Number if it’s smaller than 53 bits

確認したところ、Meteor は確かに番号を再び受け取りました。

それを考慮して:

  • ECMA によると、「大きさが 2^53 以下のすべての正および負の整数は Number 型で表現できることに注意してください。
  • 本当に長い場合は、mongoにnumberLongとして保存してもらいたい

...私たちは今良いはずです:)

于 2013-08-18T09:11:37.143 に答える
0
var myValue = parseInt('13', 10);
Finance.insert({
    stats: {
        bal1: NumberLong(myValue)
    }
});

メソッドとしてNumberLong()存在する限り、上記は機能するはずです。Mongo は、ドキュメントに従って探している数値型をサポートしています。

于 2013-08-15T07:07:54.997 に答える