我想保存一个ObjectIds数组,我通过一个REST接口通过mongoose到mongodb。当我将objectsIds从REST接口保存到数据库时,我经常遇到一个问题,我得到了一个强制转换错误。服务器端代码用typescript编写。
架构是:
var WaSchema = new mongoose.Schema({
ownerId: { type: 'String', required: true },
options: { type: 'String', required: false },
launch: [{ type : 'ObjectId', required: true }],
});
从REST界面我得到&#34; lanch&#34;一个字符串数组:launch: Array<string>
以下是我目前的保存方式:
WaModel.findOneAndUpdate(query, {
ownerId: userId,
options: wa.options,
launch: wa.launch
},
{ upsert: true },
(err, doc) => {
if (err) throw err
else return 'successfully saved/updated';
})
REST接口中的ObjectId必须如何正确呈现?这只是一种类似于&#39; 575e52790c0fc76a11e381d0&#39;还是需要像ObjectId这样的前缀(&#34; 575e52790c0fc76a11e381d0&#34;)?
最后,阵列会是什么样子?这取决于#1
我看到了填充函数,这可以帮到这个吗?
答案 0 :(得分:1)
1)如果您使用的是mongoose,则无需添加前缀ObjectId。您可以保存为参考ID数组。
$array1 = array(
[0] => Array
(
[price] => 191
[date1] => 22-07-2016
[date2] => 30-07-2016
[airline] => Lufthansa
)
[1] => Array
(
[price] => 80
[date1] => 25-07-2016
[date2] => 30-07-2016
[airline] => Easyjet
)
[2] => Array
(
[price] => 243
[date1] => 10-08-2016
[date2] => 36-08-2016
[airline] => Airberlin
)
);
$array2 = array(
[0] => Array
(
[price] => 230
[date1] => 22-07-2016
[date2] => 30-07-2016
[airline] => Lufthansa
)
[1] => Array
(
[price] => 80
[date1] => 25-07-2016
[date2] => 30-07-2016
[airline] => Easyjet
)
[2] => Array
(
[price] => 200
[date1] => 10-08-2016
[date2] => 36-08-2016
[airline] => Airberlin
)
);
2)最后你的数组看起来像这样。
var insertData = {
ownerId: userId,
options: wa.options,
launch: [ '56cea954d82cd11004ee67b5','56ceaa00d82cd11004ee67bc' ]
}
3)是的,填充功能在这里会有所帮助。它将填充整个数组。填充后,它将看起来像
"launch" : [
ObjectId("56cea954d82cd11004ee67b5"),
ObjectId("56ceaa00d82cd11004ee67bc")
],
答案 1 :(得分:0)
我想说将对象ID存储在数据类型为<script src="tripledes.js"></script>
<script src="mode-ecb.js"></script>
<button id="action-button">Click me to load info!</button>
<div id="info"></div>
的数组中。为此,您应该将字符串格式ObjectId
的id转换为'575e52790c0fc76a11e381d0'
类型。
使用以下内容进行转换:
考虑id为ObjectId
a user (userId)