Node.js 从一个数组Firestore(Firebase)中选择随机值

Node.js 从一个数组Firestore(Firebase)中选择随机值,node.js,firebase,google-cloud-functions,Node.js,Firebase,Google Cloud Functions,我有一个Posts节点,它是用户的时间线 样本: TIMELINE_INDEX - ID_POST_1 - ID_POST_2 - ID_POST_3 - ID_POST_4 - ID_POST_5 - ID_POST_6 - ID_POST_7 我有一个如下工作流程: 我不时调用一个函数(云函数),在用户的时间线中插入一条新记录 我需要做什么: 我想插入另一个节点上的记录。我有一个名为ADS(广告)的节点: 我需要帮助来访问这个ADS节点,选择一个随机ID并选择它的值。 从这里,我可以在

我有一个Posts节点,它是用户的时间线

样本:

TIMELINE_INDEX
- ID_POST_1
- ID_POST_2
- ID_POST_3
- ID_POST_4
- ID_POST_5
- ID_POST_6
- ID_POST_7
我有一个如下工作流程:

  • 我不时调用一个函数(云函数),在用户的时间线中插入一条新记录
我需要做什么:

我想插入另一个节点上的记录。我有一个名为ADS(广告)的节点:

我需要帮助来访问这个ADS节点,选择一个随机ID并选择它的值。 从这里,我可以在时间轴中执行插入

ADS节点的访问模型-示例: 只有在这里我需要选择一个随机值。

var adsRef = db.collection('ads');
var allAds = adsRef.get()
    .then(snapshot => {

        //Only here I need to choose a random value.

        snapshot.forEach(doc => {
            console.log(doc.id, '=>', doc.data());

        });
    })
    .catch(err => {
        console.log('Error getting documents', err);
    });
在插入新模具后,时间轴节点应采用这种方式

TIMELINE_INDEX
- ID_POST_1
- ID_AD_4
- ID_POST_2
- ID_POST_3
- ID_POST_4
- ID_POST_5
- ID_POST_6
- ID_POST_7

计算一个介于0和
快照
变量长度之间的随机整数

var adsRef = db.collection('ads');
var allAds = adsRef.get()
    .then(snapshot => {

    // Grab a random item from the snapshots
    var random = Math.floor(Math.random() * (snapshots.length - 0 + 1) + snapshots.length);

    // Log the information from this snapshot
    console.log(snapshots[random].id, '=>', snapshots[random].data());

})
.catch(err => {
    console.log('Error getting documents', err);
});

不起作用。错误:(无法读取adsRef.get.then.snapshot(/user\u code/lib/index.js:64:37)上未定义的属性“id”。我无法定义“length”,但没有它,我将其保留为这样(var random=Math.floor(Math.random()*(snapshot.size-0+1)+snapshot.size)),其余与您的模型相同。@Roberrrt
var adsRef = db.collection('ads');
var allAds = adsRef.get()
    .then(snapshot => {

    // Grab a random item from the snapshots
    var random = Math.floor(Math.random() * (snapshots.length - 0 + 1) + snapshots.length);

    // Log the information from this snapshot
    console.log(snapshots[random].id, '=>', snapshots[random].data());

})
.catch(err => {
    console.log('Error getting documents', err);
});